<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Chrome.ahk. Обратная связь со страницей.]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=13623</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=13623&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Chrome.ahk. Обратная связь со страницей.».]]></description>
		<lastBuildDate>Wed, 18 Apr 2018 13:53:42 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Chrome.ahk. Обратная связь со страницей.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=124792#p124792</link>
			<description><![CDATA[<p>Пока не нашёл ничего лучше, чем подключить <a href="https://chromedevtools.github.io/devtools-protocol/tot/Console#type-ConsoleMessage">домен консоли</a>:<br /></p><div class="codebox"><pre><code>PageInst.Call(&quot;Console.enable&quot;)</code></pre></div><p>И отлавливать на событии &quot;Message&quot;, в Chrome.Page.Event(), data.method == &quot;Console.messageAdded&quot;:<br /></p><div class="codebox"><pre><code>
if (data.method == &quot;Console.messageAdded&quot;)
	ToolTip,% data.params.message.text
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Wed, 18 Apr 2018 13:53:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=124792#p124792</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Chrome.ahk. Обратная связь со страницей.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=124639#p124639</link>
			<description><![CDATA[<p>Всем добра!<br />Подскажите пожалуйста, есть ли возможность организовать обратную связь со страницей? Например, можно ли &quot;присоединиться&quot; к событиям страницы, так, чтобы они вызывали AHK-функции. Как например, это делается в ActiveX-контроле - получается элемент из разметки и генерируемые им события вызывают соответствующие функции, связываемые через ComObjConnect().</p><p>Слегка модифицированный файл из примеров, идущих в &quot;коробке&quot; с файлом класса:<br /></p><div class="codebox"><pre><code>
#NoEnv
#SingleInstance, Force
SetBatchLines, -1

#Include ../Chrome.ahk

; --- Create a new Chrome instance ---

addr1 := &quot;https://autohotkey.com/&quot;
addr2 := &quot;https://autohotkey.com/boards/viewtopic.php?f=6&amp;t=42890&quot;
chPath := &quot;C:\Program Files (x86)\Google\Chrome\Application\chrome.exe&quot;
profileName := &quot;ChromeProfile&quot;
recycleProfile := true		; Удаляет профиль после завершения работы
showEvalResult := false		; Показывает возвращаемый результат вызова
							; PageInst.Evaluate() в MsgBox

FileCreateDir, %profileName%
ChromeInst := new Chrome(profileName, addr2,&quot;--no-first-run&quot;, chPath)

informerCode :=
	(LTrim Join`s
	&quot;function handlerF(ev) {
		info.innerHTML = ``${ev.clientX}x ${ev.clientY}y``;
	}

	var body = document.querySelector(&#039;body&#039;);
	var info = document.createElement(&#039;div&#039;);
	info.id = &#039;info&#039;;
	info.style.position = &#039;fixed&#039;;
	info.style.top = &#039;10px&#039;;
	info.style.right = &#039;10px&#039;;
	info.style.width = &#039;200px&#039;;
	info.style.border = &#039;2px solid #fff&#039;;
	info.style.color = &#039;#fff&#039;;
	info.style.fontWeight = &#039;bold&#039;;
	info.style.fontSize = &#039;20px&#039;;
	info.style.textShadow = &#039;1px 1px 1px #000, 1px -1px 1px #000, -1px -1px 1px #000, -1px 1px 1px #000&#039;;
	info.style.textAlign = &#039;center&#039;;
	body.appendChild(info);
	info.innerHTML = &#039;Click on the page&#039;;

	body.addEventListener(&#039;click&#039;, handlerF);&quot;
	)

; --- Connect to the page ---

if !(PageInst := ChromeInst.GetPage()) {
	MsgBox, Could not retrieve page!
	ChromeInst.Kill()
	GoSub, CloseMe
} else {
	Gui,Input: Margin, 10, 10
	Gui,Input: +Hwndinput_h
	Gui,Input: Add, Button,gEvalMe,Запустить
	Gui,Input: Add, Text,x+10 yp+5,Запускает JS-сценарий на странице:
	Gui,Input: Font, s10 Bold, Consolas
	Gui,Input: Add, Edit,xm y+7 w600 r20 vmyCode cBlue,alert(&#039;Hello World!!!&#039;);
	Gui,Input: Font
	Gui,Input: Add, Button,xm y+5 gAddInform,Click informer
	Gui,Input: Add, Button,x+10 gCloseMe,Выход
	Gui,Input: Show,,Ввод
}
return
EvalMe:
	Gui,Input: Submit, NoHide
	if (myCode == &quot;&quot;)
		return
	GoSub, EvaluateHim
return
AddInform:
	myCode := informerCode
	GoSub, EvaluateHim
return
EvaluateHim:
	try
		Result := PageInst.Evaluate(myCode)
	catch e
	{
		MsgBox, % &quot;Exception encountered in &quot; e.What &quot;:`n`n&quot;
		. e.Message &quot;`n`n&quot;
		. &quot;Specifically:`n`n&quot;
		. Chrome.Jxon_Dump(Chrome.Jxon_Load(e.Extra), &quot;`t&quot;)
	} if (showEvalResult)
		MsgBox, % &quot;Result:`n&quot; Chrome.Jxon_Dump(Result, &quot;`t&quot;)
return
CloseMe:
InputGuiClose:

	; --- Close the Chrome instance ---
	
	try
		PageInst.Call(&quot;Browser.close&quot;) ; Fails when running headless
	catch
		ChromeInst.Kill()
	PageInst.Disconnect()
	
	fPath := Format(&quot;{1}\{2}&quot;,A_ScriptDir,profileName)
	if (recycleProfile) {
		FileRemoveDir,% fPath, 1
		i := 0
		while (i &lt; 10, i++) {
			Sleep, 1000
			if (FileExist(fPath))
				FileRemoveDir,% fPath, 1
			else
				break
		}
	}
	ExitApp
</code></pre></div><p>Здесь, на загруженную страницу, при нажатии кнопки &quot;Click informer&quot; инжектится обработчик кликов в теге &quot;body&quot;, отображающий их координаты в зафиксированном справа-сверху div&#039;е. Как при клике вызвать AHK-функцию и передать ей эти координаты, например, показав их в MsgBox?</p><p>В коде класса, начиная с 310 строки описано подключение к событиям, но я не уверен, что правильно понимаю, что это действительно так и если это всё же так, то не улавливаю связь. Нуждаюсь в помощи.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Thu, 12 Apr 2018 12:08:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=124639#p124639</guid>
		</item>
	</channel>
</rss>
