<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: как правильно использовать A_ThisHotkey?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7436&amp;type=atom" />
	<updated>2012-08-08T20:21:53Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7436</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62538#p62538" />
			<content type="html"><![CDATA[<p>#If неприемлем - при нажатии хоткеев, мышка начинает заикаться.<br />Да Critical в данном случае решает проблему поочередной обработки ввода.<br />{Blind} также помог <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>А вообще весь корень зла тут:<br /></p><div class="codebox"><pre><code>PixelGetColor, color, x, y</code></pre></div><p>Про него спрошу в отдельной теме, вдруг кому пригодится.</p><p>Всем спасибо за помощь!</p>]]></content>
			<author>
				<name><![CDATA[Rediska]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27824</uri>
			</author>
			<updated>2012-08-08T20:21:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62538#p62538</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62537#p62537" />
			<content type="html"><![CDATA[<p>Верно, значит оптимальный вариант это <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-08-08T19:51:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62537#p62537</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62536#p62536" />
			<content type="html"><![CDATA[<p>Игнорирования в случае с Critical не будет, ввод буферизуется.</p>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2012-08-08T19:35:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62536#p62536</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62527#p62527" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#If IsInvoker()
    vk52::Cast(0x1A0A03, 0x0D0502, 0x1A0A03, 0x0D0502, &quot;QQW&quot;, &quot;WWW&quot;, &quot;&quot;, &quot;Ghost Walk&quot;)
    *Backspace::Combo(&quot;EEE&quot;)
#If</code></pre></div><p>#If&nbsp; таки подходит тем, что в процессе выполнения IsInvoker() «любой» ввод блокируется.</p><div class="quotebox"><blockquote><p>SendInput % &quot;{&quot; A_ThisHotkey &quot;}&quot; ; Так что же тут использовать в таком случае???</p></blockquote></div><p>Напрасно игнорируете справку. В «таком» случае использовать <strong>SendInput {Blind}{BS}</strong></p><p>Если использование #If претит, IsInvoker() выполняется неоднозначно долго и оптимизации не подлежит, очерёдность нажатий критична, игнорирование горячих клавиш при выполнении текущего потока с <strong>Critical</strong> неприемлемо — используйте собственную очередь выполнения обеспечивающую соответствующую последовательность выполнения IsInvoker() и отправки нажатий.</p><p>Лучше было бы поискать возможнось отслеживать «событие изменения фокуса», чем проверять в фокусе ли герой при «каждом чихе».</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-08-08T17:19:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62527#p62527</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62525#p62525" />
			<content type="html"><![CDATA[<p>Скорее всего, в последовательности Q-W-E следующее нажатие происходит быстрее, чем обрабатывается условие (logica) первого нажатия.<br />Тут нужно или изменять логику работы скрипта, чтоб данные функции выполнялись за меньшее время, чем последовательность нажатий, или запретить прерывание работы потока командой <a href="http://www.autohotkey.com/docs/commands/Critical.htm">Critical</a>, пример имееется в справке.</p>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2012-08-08T16:55:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62525#p62525</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62524#p62524" />
			<content type="html"><![CDATA[<p>#if не подходит ибо &quot;логика&quot; в ифе не является переменной - это функции. Которые вероятно будут выполнятся каждый раз при нажатии любой кнопки что сильно затормозит и без того тормазнутый скрипт.<br />Тут я проверяю в фокусе ли мой герой и если да, то выполняю некий каст заклинаний. Если же выбрано что то другое, то я оставляю кнопку как она есть.<br /></p><div class="codebox"><pre><code>vk52::	;R
	if (IsInvoker() &amp;&amp; Cast(0x1A0A03, 0x0D0502, 0x1A0A03, 0x0D0502, &quot;QQW&quot;, &quot;WWW&quot;, &quot;&quot;, &quot;Ghost Walk&quot;))
		return
	SendInput {vk52}
return

*Backspace::
	if (IsInvoker() &amp;&amp; Combo(&quot;EEE&quot;))
		return
	SendInput % &quot;{&quot; A_ThisHotkey &quot;}&quot; ; Так что же тут использовать в таком случае???
return</code></pre></div><p>Насколько я понял, $ предотвращает вызов того же хоткея если он вызывается в нем же. Странно, но у меня нету этих $ и зацикливаний не происходит.</p><div class="quotebox"><blockquote><p>«Инпуты» обрабатываются последовательно.<br />Какие-то у вас скоропалительные выводы.</p></blockquote></div><p>Как же тогда объяснить получение EWQ вместо нажатых QWE?<br />Мне на ум приходит только то что thread который обрабатывал нажатие Q закончил свою работу быстрее(хотя он и запустился позднее) чем это сделали W и Е.</p>]]></content>
			<author>
				<name><![CDATA[Rediska]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27824</uri>
			</author>
			<updated>2012-08-08T16:30:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62524#p62524</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62523#p62523" />
			<content type="html"><![CDATA[<p>«Инпуты» обрабатываются последовательно.<br />Какие-то у вас скоропалительные выводы.</p><div class="codebox"><pre><code>$vk51::    ;Q
    if (logica)
        return
    SendInput {vk51}
return
 
$vk57::    ;W
    if (logica)
        return
    SendInput {vk57}
return
 
$vk45::    ;E
    if (logica)
        return
    SendInput {vk45}
return</code></pre></div><p>Про <strong>$</strong> почитайте в справке, ссылки приводились.<br /></p><div class="quotebox"><blockquote><p>А как сделать что бы она не всегда была прозрачна?</p></blockquote></div><p>А в данном случае речь не о прозрачности, а о перехвате по условию.<br /></p><div class="codebox"><pre><code>#If logica
    vk51::
    vk57::
    vk45::return
#If</code></pre></div>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-08-08T15:21:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62523#p62523</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62522#p62522" />
			<content type="html"><![CDATA[<p>Да, речь шла о прозрачности клавиши. Спасибо в ряде случаев ~ помогла.<br />А как сделать что бы она не всегда была прозрачна?</p><div class="codebox"><pre><code>
q::
w::
e::
*Enter::
*NumpadEnter::
    if (logica)
        SendInput % &quot;{&quot; A_ThisHotkey &quot;}&quot;
return</code></pre></div><p>И еще у A_ThisHotkey есть такая противная штука. Когда я быстро нажимаю QWE, то получаю ЕЕЕ. Я понимаю что это глобальная переменная, но это совсем не то что ожидает юзер <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Когда же я разделил функции и убрал A_ThisHotkey :</p><div class="codebox"><pre><code>vk51::	;Q
	if (logica)
		return
	SendInput {vk51}
return

vk57::	;W
	if (logica)
		return
	SendInput {vk57}
return

vk45::	;E
	if (logica)
		return
	SendInput {vk45}
return</code></pre></div><p>То при быстром вводе QWE я иногда получаю на выходе EWQ. По этому поводу вопрос: Как гарантировать последовательную обработку инпутов?</p>]]></content>
			<author>
				<name><![CDATA[Rediska]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27824</uri>
			</author>
			<updated>2012-08-08T15:00:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62522#p62522</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62508#p62508" />
			<content type="html"><![CDATA[<p>Вам <strong>кажется</strong>, что решение вашей задачи — использование A_thisHotkey.</p><p>Если проблема в отправке нажатия с модификаторами : <a href="http://l.autohotkey.net/docs/commands/Send.htm">{Blind}</a><br />Если речь о «прозрачности» горячей клавиши : <a href="http://l.autohotkey.net/docs/Hotkeys.htm">~</a></p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-08-08T08:02:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62508#p62508</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62503#p62503" />
			<content type="html"><![CDATA[<p>Код работает не совсем так как я от него ожидаю<br /></p><div class="codebox"><pre><code>
*Enter::
*NumpadEnter::
	Suspend, Permit
	SendInput % &quot;{&quot; A_ThisHotkey &quot;}&quot;
	;MsgBox, %A_ThisHotkey%
	Sleep 100
	ToggleSuspend()
return</code></pre></div><p>MsgBox всегда выводит *Enter<br />Хоткей срабатывает, но не важно нажат ли шифт или нет, SendInput отсылает просто ENTER. A мне надо что бы отсылал шифт+ентер если так нажали. Как правильно сделать?</p><p>Спасибо за помощь.</p>]]></content>
			<author>
				<name><![CDATA[Rediska]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27824</uri>
			</author>
			<updated>2012-08-08T03:43:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62503#p62503</id>
		</entry>
</feed>
