<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: как правильно использовать A_ThisHotkey?]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7436</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7436&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: как правильно использовать A_ThisHotkey?».]]></description>
		<lastBuildDate>Wed, 08 Aug 2012 20:21:53 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62538#p62538</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Rediska)]]></author>
			<pubDate>Wed, 08 Aug 2012 20:21:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62538#p62538</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62537#p62537</link>
			<description><![CDATA[<p>Верно, значит оптимальный вариант это <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Wed, 08 Aug 2012 19:51:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62537#p62537</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62536#p62536</link>
			<description><![CDATA[<p>Игнорирования в случае с Critical не будет, ввод буферизуется.</p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Wed, 08 Aug 2012 19:35:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62536#p62536</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62527#p62527</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Wed, 08 Aug 2012 17:19:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62527#p62527</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62525#p62525</link>
			<description><![CDATA[<p>Скорее всего, в последовательности Q-W-E следующее нажатие происходит быстрее, чем обрабатывается условие (logica) первого нажатия.<br />Тут нужно или изменять логику работы скрипта, чтоб данные функции выполнялись за меньшее время, чем последовательность нажатий, или запретить прерывание работы потока командой <a href="http://www.autohotkey.com/docs/commands/Critical.htm">Critical</a>, пример имееется в справке.</p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Wed, 08 Aug 2012 16:55:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62525#p62525</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62524#p62524</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Rediska)]]></author>
			<pubDate>Wed, 08 Aug 2012 16:30:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62524#p62524</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62523#p62523</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Wed, 08 Aug 2012 15:21:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62523#p62523</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62522#p62522</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Rediska)]]></author>
			<pubDate>Wed, 08 Aug 2012 15:00:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62522#p62522</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62508#p62508</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Wed, 08 Aug 2012 08:02:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62508#p62508</guid>
		</item>
		<item>
			<title><![CDATA[AHK: как правильно использовать A_ThisHotkey?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62503#p62503</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Rediska)]]></author>
			<pubDate>Wed, 08 Aug 2012 03:43:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62503#p62503</guid>
		</item>
	</channel>
</rss>
