<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: передача массива из javascript в AHK]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=14675</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14675&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: передача массива из javascript в AHK».]]></description>
		<lastBuildDate>Wed, 10 Apr 2019 04:47:46 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133473#p133473</link>
			<description><![CDATA[<div class="codebox"><pre><code>ComObjError(false) 
whr := ComObjCreate(&quot;WinHttp.WinHttpRequest.5.1&quot;) 
whr.Open(&quot;POST&quot;, &quot;https://api.vk.com/method/messages.getHistory?count=&quot; count &quot;&amp;chat_id=&quot; ID &quot;&amp;access_token=&quot; Token &quot;&amp;v=5.85&quot;, true) 
whr.SetRequestHeader(&quot;User-Agent&quot;, &quot;Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36&quot;) 
whr.SetRequestHeader(&quot;Content-Type&quot;,&quot;application/x-www-form-urlencoded&quot;) 
whr.Send() 
whr.WaitForResponse() 
jsontext := % whr.ResponseText
JSON = 
(LTrim Join
%jsontext% 
) 
htmldoc := ComObjCreate(&quot;htmlfile&quot;) 
Script := htmldoc.Script 
Script.execScript(&quot; &quot;, &quot;JScript&quot;) 
oJSON := Script.eval(&quot;(&quot; . JSON . &quot;)&quot;)
date := % oJSON.response.items.0.date
text := % oJSON.response.items.0.text 
from := % oJSON.response.items.0.from_id 
idsms := % oJSON.response.items.0.id</code></pre></div><p>Чем вам не тот самый код для Post запроса и разбора JSON ответа?<br />или не то нужно? Можно и без запроса.</p>]]></description>
			<author><![CDATA[null@example.com (wladkokopops)]]></author>
			<pubDate>Wed, 10 Apr 2019 04:47:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133473#p133473</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133250#p133250</link>
			<description><![CDATA[<p>Собственно, вот: <a href="https://files.fm/f/2xа5рnоу">https://files.fm/f/2xа5рnоу</a>. <span style="color: gray">(Спасибо Malcev&#039;у за интересный сайтик)</span></p><p><span style="color: red">==========================================================</span><br />В чем отличия от <a href="https://github.com/joedf/Webapp.ahk">основного кода</a>.<br /></p><ul><li><p>классы, экземпляры классов - это удобно</p></li><li><p>поправлена функция AHK_attach() - ниже заметка 1</p></li><li><p>есть возможность прикрутить класс для callback&#039;а- заметка 2</p></li><li><p>[JS]присутствует несколько знакомых функций из AHK</p></li></ul><p>Единственный минус: несколько непонятных мне функций(я их в самый низ убрал). Не знаю, что они делают и как их правильно вписать в новый код.</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Заметки</div><div class="fancy_spoiler"><p>1* в основном коде, &quot;аттач&quot; происходит при каждом клике. Для этого создается хук на нажатие мыши, что уже является не хорошим тоном.<br /></p><div class="codebox"><pre><code>~LButton:: ;//cheap fix to reattach JS_AHK
gosub,__Webapp_JS_AHK_Attach
return</code></pre></div><p>В моем же случае, аттач происходит после прогрузки страницы. Если такового и не произошло, то можно принудительно вызвать js_AttachAHK()</p><p>2* Пример в архиве</p></div></div><p>P.S. не знаю, нужно ли создавать отдельную тему по этому поводу. Дайте знать.</p><p>P.P.S. я приложил файлик _commands.ahk. В нем переписаны &quot;команды&quot; в функции. Есть ли, может, у кого все переписанные команды?</p>]]></description>
			<author><![CDATA[null@example.com (MandarinKa02)]]></author>
			<pubDate>Sat, 30 Mar 2019 13:38:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133250#p133250</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133230#p133230</link>
			<description><![CDATA[<p>Конечно же делитесь. Для этого форум и существует.<br />Я, например, с большим интересом читаю беседы и пояснения, людей, понимающих то, зачем они это делают. Это не только альтернативная точка зрения, но за частую и открытие. А умеющие пользоваться поиском и имеющие схожие задачи, обзаведутся ещё одной опорой в своих изысканиях.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Fri, 29 Mar 2019 12:16:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133230#p133230</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133229#p133229</link>
			<description><![CDATA[<p>Понял, значит буду использовать json.<br /></p><div class="quotebox"><cite>KusochekDobra пишет:</cite><blockquote><p>Не забывайте так же, что имеете дело с сильно урезанным браузерным движком, который не поддерживает множество новых WEB-стандартов и, вроде как, классы, в нём, тоже не поддерживаются. Но это можно обойти через прототипы. На Стаке есть годная инфа.</p></blockquote></div><p>Хех, знаю это. <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /> То, что выше описывал, можно было бы провернуть при помощи <a href="https://learn.javascript.ru/proxy">Proxy</a>. Но, спасибо.</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;offtop</div><div class="fancy_spoiler"><p><span style="color: gray">если кому интересно, переписываю <a href="https://github.com/joedf/Webapp.ahk/blob/master/src/Lib/Webapp.ahk">эту</a> груду камней. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />На мой взгляд, код выполнен не аккуратно и он одноразовый. Если понадобится вставить его посредине крупного проекта, то это не обойдется без дополнительных заморочек. Да и само окно можно только одно создать. Я же, сделал из этого всего класс.<br />Могу после всех операций поделиться результатом.</span></p></div></div>]]></description>
			<author><![CDATA[null@example.com (MandarinKa02)]]></author>
			<pubDate>Fri, 29 Mar 2019 11:44:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133229#p133229</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133228#p133228</link>
			<description><![CDATA[<p>Передавать данные строкой, которую стрингифуете с любой стороны — наиболее универсально. Так как, как сказал выше <strong>teadrinker</strong>, с каждой стороны, это будут разные данные, схожие только в своей описательной части. Вызывать AHK-функции из JS, можно при помощи ComObjConnect(), подписав соответствующие функции на события, а события можно генерировать на стороне JS при помощи <a href="https://developer.mozilla.org/ru/docs/Web/API/Event/Event">Event()</a>.</p><p>Не забывайте так же, что имеете дело с сильно урезанным браузерным движком, который не поддерживает множество новых WEB-стандартов и, вроде как, классы, в нём, тоже не поддерживаются. Но это можно обойти через прототипы. На Стаке есть годная инфа.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Fri, 29 Mar 2019 11:12:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133228#p133228</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133227#p133227</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Совсем запутали. Про какую цитату идёт речь?</p></blockquote></div><p>Прошу прощения. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Цитату, которой вы процитировали мой пост. <img src="//forum.script-coding.com/img/smilies/lol.png" width="15" height="15" /><br />В общем, вот <a href="https://www.autohotkey.com/boards/viewtopic.php?style=17&amp;f=6&amp;t=77&amp;start=20">код</a>:<br /></p><div class="codebox"><pre><code>#IfWinActive, ahk_class XLMAIN
;===================================================================================
F1::	; set values to Range(&quot;A1:B3&quot;) via SafeArray
SafeArray :=	ComObjArray(12, 3, 2)	; create a safe array. &quot;12&quot; means VT_VARIANT, &quot;3&quot; means 3 rows (1. dimension), &quot;2&quot; means 2 columns (2. dimension)

; Note: when building a SafeArray to assign to an Excel Range Value, it will be 0-based
Loop, 3	; 3 rows
{
	RowNum :=	A_Index-1
	Loop, 2	;  2 columns
	{
		ColNum :=	A_Index-1
		SafeArray[RowNum, ColNum] :=	&quot;Row&quot; RowNum +1  &quot; Col&quot; ColNum + 1
	}
}

oExcel :=	ComObjActive(&quot;Excel.Application&quot;)
oExcel.Range(&quot;A1:B3&quot;).value :=	SafeArray 	; set safe array to range object
return


;===================================================================================
F2::	; get values from Range(&quot;A1:B3&quot;) via SafeArray
oExcel :=	ComObjActive(&quot;Excel.Application&quot;)

SafeArray :=	oExcel.Range(&quot;A1:B3&quot;).value	; get safe array

;MsgBox %	SafeArray.MaxIndex(1)   ; get total rows (1. dimension)
;MsgBox %	SafeArray.MaxIndex(2)   ; get total columns (2. dimension)

; Note: when extracting the SafeArray, it will be 1-based
Loop %	SafeArray.MaxIndex(1) ; loop through every row
{
	CurRowNum :=	A_Index
	Loop %	SafeArray.MaxIndex(2)  ; loop through every column
		MsgBox,,, %	SafeArray[CurRowNum, A_Index], 1    ; get cell&#039;s value
}
return</code></pre></div><p>P.S. у меня одного некорректно грузится офф.форум?</p>]]></description>
			<author><![CDATA[null@example.com (MandarinKa02)]]></author>
			<pubDate>Fri, 29 Mar 2019 10:52:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133227#p133227</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133226#p133226</link>
			<description><![CDATA[<div class="quotebox"><cite>MandarinKa02 пишет:</cite><blockquote><p>teadrinker,какой? Тот, что приложил?<br />Или тот, о котором в цитате идется? В таком случае, я не пробовал т.к не нужен, но по идее должен работать.</p></blockquote></div><p>Совсем запутали. Про какую цитату идёт речь?<br />Передавать объект из js в AHK в принципе не имеет смысла, они по-разному устроены.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 29 Mar 2019 10:25:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133226#p133226</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133225#p133225</link>
			<description><![CDATA[<p>P.S. пока писал придумал костыль. Передать json с названиями методов, сделать обработчик на каждый метод. (По примеру, что выше привел)</p>]]></description>
			<author><![CDATA[null@example.com (MandarinKa02)]]></author>
			<pubDate>Fri, 29 Mar 2019 09:53:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133225#p133225</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133224#p133224</link>
			<description><![CDATA[<p><strong>teadrinker</strong>,какой? Тот, что приложил?<br />Или тот, о котором в цитате идется? В таком случае, я не пробовал т.к не нужен, но по идее должен работать.</p><p><strong>KusockekDobra</strong>, спасибо за ответ, но не совсем то. Вы вызываете из самого AHK, а у меня callback. (Допустим, при нажатии кнопки, вызываю функцию AHK())</p><p>Объясню поподробнее:<br />В JavaScript я присваиваю переменной AHK callback-функцию самого AHK.<br />Для того, чтобы в аргумент передать объект, я использую по всему коду JSON.stringify, что не очень удобно. Я хочу избавиться от лишних действий и довести код до ума.<br />До ума, подразумеваю следующее:<br /></p><div class="codebox"><pre><code>AHK(&quot;blablabla&quot;,[&quot;from&quot;,javascript&quot;])</code></pre></div><p>У меня было несколько вариантов:<br />Перед вызовом AHK(), переопределить эту переменную и задать функцию(js), которая обработает(&quot;стрингифует&quot; <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />) все аргументы и уже после, вызвать основную функцию AHK(). <br />(Тут все понятно, но я пошел дальше. Я захотел чтобы можно было вызвать AHK.сделаймнехорошо() ) Я этой переменной(AHK) приравнил класс с методами. И вроде все работает, но незадача. Объект/массив не передать.<br />Тут у меня пришли две мысли:<br />- com (что я вовсе не понимаю)<br />- опять обработчик перед вызовом. (но есть вопрос, как повесить обработчик на целый класс. В AHK это бы была функция __Call(). В js такого, вроде как, нет.)</p>]]></description>
			<author><![CDATA[null@example.com (MandarinKa02)]]></author>
			<pubDate>Fri, 29 Mar 2019 09:48:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133224#p133224</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133223#p133223</link>
			<description><![CDATA[<p>Внутри JS кода, объявите объект, над которым собираетесь проводить эксперименты, глобальным:<br /></p><div class="codebox"><pre><code>
var dataJSON;

function buildData(d) {
    dataJSON = JSON.parse(d);
	// обработка полученных данных из AHK
}
function dumpData() {
    return JSON.stringify(dataJSON);
}
</code></pre></div><p>AHK код:<br /></p><div class="codebox"><pre><code>
html := BuildHTML()

Gui, 1: Add, ActiveX, vwb, about:&lt;!DOCTYPE html&gt;&lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;
wb.Silent := true, ComObjError(false)

wb.document.open()
wb.document.write(html)
wb.document.close
;wb.refresh()

doc := wb.doc
win := doc.parentWindow

	; Отправить данные в документ.
		; Здесь приводится дополнительная обработка передаваемых данных,
		; содержащих true, false и null в закомментированном виде([&quot;myTrue&quot;:&quot;true&quot;])
		; для получения значений оригинального типа, так как в AHK эти типы не поддерживаются.
win.buildData(RegExReplace(JSON.Stringify( {&quot;data&quot;:[1,2,3],&quot;myTrue&quot;:&quot;true&quot;,&quot;myFalse&quot;:&quot;false&quot;,&quot;myNull&quot;:&quot;null&quot;} ), &quot;&quot;&quot;(true|false|null)&quot;&quot;&quot;, &quot;$1&quot;))

	; Получить данные из документа
dump := JSON.Parse(win.dumpData())
</code></pre></div><p>Требуется JSON.ahk от <strong>teadrinker</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Fri, 29 Mar 2019 08:39:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133223#p133223</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133221#p133221</link>
			<description><![CDATA[<div class="quotebox"><cite>MandarinKa02 пишет:</cite><blockquote><p>Есть только, как его &quot;отправить&quot;.</p></blockquote></div><p>А что, у вас этот код работает?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 29 Mar 2019 00:25:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133221#p133221</guid>
		</item>
		<item>
			<title><![CDATA[AHK: передача массива из javascript в AHK]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=133220#p133220</link>
			<description><![CDATA[<p>Вычитал на форумах, что это дело нужно провернуть при помощи COM. Примеров, как получить объект - не нашел. Есть только, как его &quot;отправить&quot;.<br /></p><div class="codebox"><pre><code>Gui, Add, ActiveX, w512 h512 vActiveX, Shell.Explorer
ActiveX.document.parentWindow.AHK:=Func(&quot;foo&quot;)
ActiveX.Navigate(&quot;about:&lt;!DOCTYPE html&gt;&lt;script&gt;AHK([1,2,3],{1:[1,2,3]})&lt;/script&gt;&quot;)
return

foo(param1,param2) {
msgbox % isObject(param1)
}

f1::reload</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (MandarinKa02)]]></author>
			<pubDate>Thu, 28 Mar 2019 23:43:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=133220#p133220</guid>
		</item>
	</channel>
</rss>
