<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Генератор QR кодов от Google]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=17041</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17041&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Генератор QR кодов от Google».]]></description>
		<lastBuildDate>Wed, 23 Mar 2022 17:58:14 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[AHK: Генератор QR кодов от Google]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=152653#p152653</link>
			<description><![CDATA[<p>У Гугла, оказывается, <a href="https://developers.google.com/chart/infographics/docs/qr_codes">есть бесплатное API</a> для генерации QR кодов. Правда, написано, что this API is deprecated, однако функционал на данный момент поддерживается.<br /></p><div class="codebox"><pre><code>len := QrGenerator(&quot;https://forum.script-coding.com/viewtopic.php?id=17041&quot;, pngData, 200)
FileOpen(A_ScriptDir . &quot;\qr.png&quot;, &quot;w&quot;).RawWrite(pngData, len)
Gui, Margin, 0, 0
Gui, Add, Pic,, % A_ScriptDir . &quot;\qr.png&quot;
Gui, Show
Return

GuiClose() {
   ExitApp
}

QrGenerator(text, ByRef pngData, qrSizePix := 300, correctionLevel := &quot;M&quot;) {
; correctionLevel: L, M, Q, H
   static url := &quot;https://chart.googleapis.com/chart?cht=qr&quot;
   completeUrl := url . &quot;&amp;chl=&quot; . EncodeDecodeURI(text) . &quot;&amp;chs=&quot; . qrSizePix . &quot;&amp;chld=&quot; . correctionLevel
   dataLen := WebRequest(completeUrl, pngData,,,, error := &quot;&quot;)
   if (error != &quot;&quot;)
      throw error
   Return dataLen
}

EncodeDecodeURI(str, encode := true, component := true) {
   static Doc, JS
   if !Doc {
      Doc := ComObjCreate(&quot;htmlfile&quot;)
      Doc.write(&quot;&lt;meta http-equiv=&quot;&quot;X-UA-Compatible&quot;&quot; content=&quot;&quot;IE=9&quot;&quot;&gt;&quot;)
      JS := Doc.parentWindow
      ( Doc.documentMode &lt; 9 &amp;&amp; JS.execScript() )
   }
   Return JS[ (encode ? &quot;en&quot; : &quot;de&quot;) . &quot;codeURI&quot; . (component ? &quot;Component&quot; : &quot;&quot;) ](str)
}

WebRequest(url, ByRef data, method := &quot;GET&quot;, HeadersArray := &quot;&quot;, body := &quot;&quot;, ByRef error := &quot;&quot;) {
   Whr := ComObjCreate(&quot;WinHttp.WinHttpRequest.5.1&quot;)
   Whr.Open(method, url, true)
   for name, value in HeadersArray
      Whr.SetRequestHeader(name, value)
   Whr.Send(body)
   Whr.WaitForResponse()
   status := Whr.status
   if (status != 200)
      error := &quot;HttpRequest error, status: &quot; . status
   Arr := Whr.responseBody
   pData := NumGet(ComObjValue(arr) + 8 + A_PtrSize)
   length := Arr.MaxIndex() + 1
   VarSetCapacity(data, length, 0)
   DllCall(&quot;RtlMoveMemory&quot;, &quot;Ptr&quot;, &amp;data, &quot;Ptr&quot;, pData, &quot;Ptr&quot;, length)
   Return length
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 23 Mar 2022 17:58:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=152653#p152653</guid>
		</item>
	</channel>
</rss>
