<?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>https://forum.script-coding.com/viewtopic.php?id=18420</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=18420&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата».]]></description>
		<lastBuildDate>Tue, 08 Apr 2025 23:44:54 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162246#p162246</link>
			<description><![CDATA[<p>Там одна и та же клавиша зарегистрирована. В этом случае будет срабатывать тот вариант, который выше в коде.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 08 Apr 2025 23:44:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162246#p162246</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162245#p162245</link>
			<description><![CDATA[<p>Это <strong>other than</strong> меня сбило...<br />Пора отдыхать. Благодарю ))</p>]]></description>
			<author><![CDATA[null@example.com (Indrik)]]></author>
			<pubDate>Tue, 08 Apr 2025 23:29:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162245#p162245</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162244#p162244</link>
			<description><![CDATA[<p>Всё, я туплю ))) Сорян. Так работает:<br /></p><div class="codebox"><pre><code>#IfWinActive ahk_exe Notepad2.exe
a::b
b::a

#IfWinNotActive ahk_exe Notepad2.exe
m::n
n::m
c::d
d::c</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Indrik)]]></author>
			<pubDate>Tue, 08 Apr 2025 23:27:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162244#p162244</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162243#p162243</link>
			<description><![CDATA[<p>А может проще указать что-то вроде<br /></p><div class="quotebox"><blockquote><p>#IfWinActive ahk_exe_not Notepad2.exe</p></blockquote></div><p>Такого нет, я знаю. Для примера просто. Как-то можно задать условие: &quot;Если текущее окно не является Блокнотом&quot;?</p>]]></description>
			<author><![CDATA[null@example.com (Indrik)]]></author>
			<pubDate>Tue, 08 Apr 2025 23:24:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162243#p162243</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162242#p162242</link>
			<description><![CDATA[<p>В доках есть такой пример:<br /></p><div class="codebox"><pre><code>#IfWinActive ahk_class Notepad
^!a::MsgBox You pressed Ctrl-Alt-A while Notepad is active.  ; This hotkey will have no effect if pressed in other windows (and it will &quot;pass through&quot;).
#c::MsgBox You pressed Win-C while Notepad is active.
::btw::This replacement text for &quot;btw&quot; will occur only in Notepad.
#IfWinActive
#c::MsgBox You pressed Win-C in a window other than Notepad.</code></pre></div><p>Важна последняя строка, где сказано:<br /></p><div class="quotebox"><blockquote><p>in a window <strong>other than</strong> Notepad</p></blockquote></div><p>Т. е. они подчёркивают, что не в любом вообще, а в любом, кроме Блокнота. А значит эта ветка не должна выполняться, если выполняются другие (если фокус находится в Блокноте). Также и в моём примере, m\n\c\d не должны меняться в Блокноте.<br />Я вот думаю, может эту бодягу надо в бесконечный цикл завернуть (в таймер тот же)? Но опять же, в доках про это не сказано.</p>]]></description>
			<author><![CDATA[null@example.com (Indrik)]]></author>
			<pubDate>Tue, 08 Apr 2025 23:20:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162242#p162242</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162241#p162241</link>
			<description><![CDATA[<p>Первая директива накладывает ограничение, вторая (без параметров) снимает. Почему то, что после второй, не должно работать и в блокноте тоже?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 08 Apr 2025 23:18:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162241#p162241</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162240#p162240</link>
			<description><![CDATA[<p>Пробовал менять местами блоки - результат тот же.</p>]]></description>
			<author><![CDATA[null@example.com (Indrik)]]></author>
			<pubDate>Tue, 08 Apr 2025 23:12:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162240#p162240</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162239#p162239</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Да, так намного лучше. Но немного что-то не работает. Вот скрипт:<br /></p><div class="codebox"><pre><code>#SingleInstance force
#InstallKeybdHook
#NoEnv

#IfWinActive ahk_exe Notepad2.exe
a::b
b::a

#IfWinActive
m::n
n::m
c::d
d::c</code></pre></div><p>НЕ в Блокноте всё работает как задумано.<br />В Блокноте он меняет все буквы, т. е. и a с b, и m с n, и c с d тоже. Т. е. как будто бы он не видит директивы #IfWinActive (без параметров), которая должна (по сути) заканчивать блок с a и b. Либо эта директива работает не так, как написано в доках. Напирмер, она просто разрешает выполнение гор.кл. во всех окнах (т. е. не кроме тех, что есть выше в скрипте, а вообще во всех). Но тогда в ней не было бы смысла, потому что она обесценивала бы наличие предыдущих директив.</p>]]></description>
			<author><![CDATA[null@example.com (Indrik)]]></author>
			<pubDate>Tue, 08 Apr 2025 23:08:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162239#p162239</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162238#p162238</link>
			<description><![CDATA[<p><strong>__Михаил__</strong><br />Я так понимаю, разница между Hotkey и директивой #IfWinActive в том, что первая создаёт горячие клавиши непосредственно в процессе выполнения скрипта, а вторая - по классике, когда всё заранее известно?</p>]]></description>
			<author><![CDATA[null@example.com (Indrik)]]></author>
			<pubDate>Tue, 08 Apr 2025 22:47:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162238#p162238</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162234#p162234</link>
			<description><![CDATA[<p>Используйте <a href="https://www.autohotkey.com/docs/v1/lib/Hotkey.htm">Hotkey</a> для динамического указания что включить / выключить.</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Tue, 08 Apr 2025 19:12:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162234#p162234</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162233#p162233</link>
			<description><![CDATA[<p>Пропустил ваше сообщение. </p><div class="quotebox"><cite>Indrik пишет:</cite><blockquote><div class="codebox"><pre><code>ON:
	a::b
	b::a
return</code></pre></div></blockquote></div><p>Горячие клавиши не могут задаваться и по метке. Они все загружаются сразу, независимо от их расположения в коде. Единственные условия, которые могут влиять на их работу, задаются директивами, которые начинаются со знака #, например:<br /></p><div class="codebox"><pre><code>#IfWinActive ahk_class Notepad
F1::MsgBox Это сообщение появится`, если нажать F1`, когда активно окно блокнота</code></pre></div><p>В справке: <a href="https://www.autohotkey.com/docs/v1/Hotkeys.htm#Context">Context-sensitive Hotkeys</a></p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 08 Apr 2025 18:38:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162233#p162233</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162198#p162198</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Тогда так (?):<br /></p><div class="codebox"><pre><code>#SingleInstance force
#InstallKeybdHook
#NoEnv

SetTimer, wr
return

wr:
	WinGet, pname, ProcessName, A
	if pname = Notepad2.exe
	goto, ON
	else
	goto, OFF
return

ON:
	a::b
	b::a
return

OFF:
	m::n
	n::m
return

c::d
d::c</code></pre></div><p>Но это тоже не работает. В Блокноте всё время посылает b.</p>]]></description>
			<author><![CDATA[null@example.com (Indrik)]]></author>
			<pubDate>Sun, 06 Apr 2025 17:37:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162198#p162198</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162197#p162197</link>
			<description><![CDATA[<p>Горячие клавиши не могут задаваться в блоке if { }.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 06 Apr 2025 00:08:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162197#p162197</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162196#p162196</link>
			<description><![CDATA[<p>Дополнение.<br />Описанное выше происходит при запуске Скрипта №1, а при запуске Скрипта №2, появляется вот такое окошко:<br />см. вложение.<br />И оно бесконечно не закрывается. Т. е. нажимаешь ОК, появляется снова точно такое же.<br />При этом, если перевести фокус в Блокнот, то клавиши m и n ничего не печатают.</p><p>Я даже рядом не понимаю, что не так. Скобка } явно на своём месте - она закрывает ветку else...<br />Autohotkey 1.1.33.02</p>]]></description>
			<author><![CDATA[null@example.com (Indrik)]]></author>
			<pubDate>Sat, 05 Apr 2025 20:27:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162196#p162196</guid>
		</item>
		<item>
			<title><![CDATA[AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162195#p162195</link>
			<description><![CDATA[<p>Здравствуйте! Для начала, прикладываю скрипты, в которых наблюдается хрень. Скрипт №1 и скрипт №2.<br />Скрипт №1:<br /></p><div class="codebox"><pre><code>#SingleInstance force
#InstallKeybdHook
#NoEnv

SetTimer, wr
return

wr:
	WinGet, pname, ProcessName, A
	if pname = emacs.exe
{
	a::b
	b::a
}
else
{
	m::n
	n::m
}
return

c::d
d::c</code></pre></div><p>Скрипт №2:<br /></p><div class="codebox"><pre><code>#SingleInstance force
#InstallKeybdHook
#NoEnv

SetTimer, wr
return

wr:
	WinGet, pname, ProcessName, A
	if pname = emacs.exe
{
	a::
	{
	send, {b}
	}
	b::
	{
	send, {a}
	}
}
else
{
	m::
	{
	send, {n}
	}
	n::
	{
	send, {m}
	}
}
return

c::
{
send, {d}
}
d::
{
send, {c}
}</code></pre></div><p>Как видно из скриптов, а они предельно простые, задача стоит такая:<br />1. Если запущен Emacs, то: а) при нажатии a, должно посылаться b, б) при нажатии b, должно посылаться a.<br />2. Если Emacs не запущен, то: а) при нажатии m, должно посылаться n, б) при нажатии n должно посылаться m.<br />3. И всегда, пока скрипт запущен, независимо от того, является ли окно Emacs активным, или нет (т. е. вне таймера): а) при нажатии c, должно посылаться d, б) при нажатии d, должно посылаться c.<br />Не ищите практического смысла в этом скрипте - он мне нужен как проверка перед написанием более сложного. И хорошо, что я решил сделать такой проверочный скрипт, т. к. проверка не прошла. Скрипт не ведёт себя как ожидается.<br />А именно - он всё время непрерывно посылает n, словно я зажал клавишу m. Например, если перевести фокус на рабочий стол и переключить на инглиш, то начинают миганть все иконки, начинающиеся на n (в т. ч. на прописную). А если перевести фокус на Блокнот, то в нём начинают печататься буквы n в английской раскладке и т в русской. В Emacs-e он печатает (но непрерывно, а только когда нажимаешь!) и a вместо b, и b вместо a. И также m вместо n, и n вместо m. Т. е. как будто обе ветки (условная тру и else работают одновременно). И что особенно удивительно - даже если приостановить действие скрипта (suspend hotkeys)!!! Прекращается это только при полном выходе из скрипта.<br />Вот как так-то?! Всё ж предельно просто, уж куда проще, где тут можно ошибиться?</p>]]></description>
			<author><![CDATA[null@example.com (Indrik)]]></author>
			<pubDate>Sat, 05 Apr 2025 20:19:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162195#p162195</guid>
		</item>
	</channel>
</rss>
