<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Остановка одного скрипта из тела другого]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=125&amp;type=atom" />
	<updated>2006-08-30T15:42:33Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=125</id>
		<entry>
			<title type="html"><![CDATA[AHK: Остановка одного скрипта из тела другого]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=521#p521" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2006-08-30T15:42:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=521#p521</id>
		</entry>
</feed>
