<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Остановка одного скрипта из тела другого]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=125</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=125&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Остановка одного скрипта из тела другого».]]></description>
		<lastBuildDate>Wed, 30 Aug 2006 15:42:33 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[AHK: Остановка одного скрипта из тела другого]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=521#p521</link>
			<description><![CDATA[<p>Есть несколько способов программно завершить работу одного скрипта AutoHotkey из другого.</p><p><strong>1</strong>. Можно использовать команду ExitApp, повесив её на какое-либо сочетание клавиш. В другом скрипте можно это сочетание клавиш послать командой Send. В первом скрипте пишем, например:<br /></p><div class="codebox"><pre><code>; CTRL+ALT+SHIFT+WIN+F12 (не руками же нажимать будем) - выйти из скрипта
^!+#F12::ExitApp</code></pre></div><p>Во втором скрипте (&quot;управляющем&quot;):<br /></p><div class="codebox"><pre><code>Send, ^!+#{F12} ; CTRL+ALT+SHIFT+WIN+F12</code></pre></div><p>Запускаем второй скрипт - первый закрывается.<br />Однако, при этом будут работать не все сочетания клавиш. Не будут работать те сочетания клавиш, которые используют для своей реализации keyboard hook, например, клавиши с префиксом $ или клавиши, назначенные скан-кодами. Чтобы определить, используется ли keyboard hook в каких-либо горячих клавишах вашего скрипта, откройте окно запущенного скрипта с помощью двойного щелчка по его иконке в трее и выполните команду меню &quot;View&quot; - &quot;Hotkeys and their methods&quot;. В колонке &quot;Type&quot; будет содержаться необходимая вам информация.</p><p><strong>2</strong>. Если заранее известно имя закрываемого скрипта, тогда закрыть его из другого скрипта можно, например, так:<br /></p><div class="codebox"><pre><code>SetTitleMatchMode, 2 ; сравнивать с любой частью заголовка окна
DetectHiddenWindows, On ; искать в скрытых окнах
WinClose, Script2Close.ahk - AutoHotkey v ; останавливаем скрипт (&quot;выходим&quot; его)</code></pre></div><p>В данном примере закрывается скрипт &quot;Script2Close.ahk&quot;.</p><p><strong>3</strong>. И третий, возможно, самый лучший способ. В первом скрипте пишем:<br /></p><div class="codebox"><pre><code>OnMessage(CloseMyScript, &quot;CloseScriptMonitor&quot;) ; мониторим наше сообщение
CloseScriptMonitor()
{
    ExitApp
}</code></pre></div><p>Во втором:<br /></p><div class="codebox"><pre><code>DetectHiddenWindows, On ; искать в скрытых окнах
; получить в массив список всех окон класса AutoHotkey:
WinGet, Array_id, list, ahk_class AutoHotkey
Loop, %Array_id% ; просмотреть массив окон
    ; выслать всем найденным окнам своё сообщение:
    PostMessage, CloseMyScript,,,, % &quot;ahk_id&quot; Array_id%A_Index%</code></pre></div><p>Информацию опубликовал <strong>Androgen</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Wed, 30 Aug 2006 15:42:33 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=521#p521</guid>
		</item>
	</channel>
</rss>
