<?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="https://forum.script-coding.com/extern.php?action=feed&amp;tid=18420&amp;type=atom" />
	<updated>2025-04-08T23:44:54Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=18420</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162246#p162246" />
			<content type="html"><![CDATA[<p>Там одна и та же клавиша зарегистрирована. В этом случае будет срабатывать тот вариант, который выше в коде.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-04-08T23:44:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162246#p162246</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162245#p162245" />
			<content type="html"><![CDATA[<p>Это <strong>other than</strong> меня сбило...<br />Пора отдыхать. Благодарю ))</p>]]></content>
			<author>
				<name><![CDATA[Indrik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29749</uri>
			</author>
			<updated>2025-04-08T23:29:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162245#p162245</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162244#p162244" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Indrik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29749</uri>
			</author>
			<updated>2025-04-08T23:27:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162244#p162244</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162243#p162243" />
			<content type="html"><![CDATA[<p>А может проще указать что-то вроде<br /></p><div class="quotebox"><blockquote><p>#IfWinActive ahk_exe_not Notepad2.exe</p></blockquote></div><p>Такого нет, я знаю. Для примера просто. Как-то можно задать условие: &quot;Если текущее окно не является Блокнотом&quot;?</p>]]></content>
			<author>
				<name><![CDATA[Indrik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29749</uri>
			</author>
			<updated>2025-04-08T23:24:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162243#p162243</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162242#p162242" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Indrik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29749</uri>
			</author>
			<updated>2025-04-08T23:20:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162242#p162242</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162241#p162241" />
			<content type="html"><![CDATA[<p>Первая директива накладывает ограничение, вторая (без параметров) снимает. Почему то, что после второй, не должно работать и в блокноте тоже?</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-04-08T23:18:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162241#p162241</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162240#p162240" />
			<content type="html"><![CDATA[<p>Пробовал менять местами блоки - результат тот же.</p>]]></content>
			<author>
				<name><![CDATA[Indrik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29749</uri>
			</author>
			<updated>2025-04-08T23:12:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162240#p162240</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162239#p162239" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Indrik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29749</uri>
			</author>
			<updated>2025-04-08T23:08:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162239#p162239</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162238#p162238" />
			<content type="html"><![CDATA[<p><strong>__Михаил__</strong><br />Я так понимаю, разница между Hotkey и директивой #IfWinActive в том, что первая создаёт горячие клавиши непосредственно в процессе выполнения скрипта, а вторая - по классике, когда всё заранее известно?</p>]]></content>
			<author>
				<name><![CDATA[Indrik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29749</uri>
			</author>
			<updated>2025-04-08T22:47:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162238#p162238</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162234#p162234" />
			<content type="html"><![CDATA[<p>Используйте <a href="https://www.autohotkey.com/docs/v1/lib/Hotkey.htm">Hotkey</a> для динамического указания что включить / выключить.</p>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2025-04-08T19:12:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162234#p162234</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162233#p162233" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-04-08T18:38:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162233#p162233</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162198#p162198" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Indrik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29749</uri>
			</author>
			<updated>2025-04-06T17:37:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162198#p162198</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162197#p162197" />
			<content type="html"><![CDATA[<p>Горячие клавиши не могут задаваться в блоке if { }.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-04-06T00:08:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162197#p162197</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162196#p162196" />
			<content type="html"><![CDATA[<p>Дополнение.<br />Описанное выше происходит при запуске Скрипта №1, а при запуске Скрипта №2, появляется вот такое окошко:<br />см. вложение.<br />И оно бесконечно не закрывается. Т. е. нажимаешь ОК, появляется снова точно такое же.<br />При этом, если перевести фокус в Блокнот, то клавиши m и n ничего не печатают.</p><p>Я даже рядом не понимаю, что не так. Скобка } явно на своём месте - она закрывает ветку else...<br />Autohotkey 1.1.33.02</p>]]></content>
			<author>
				<name><![CDATA[Indrik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29749</uri>
			</author>
			<updated>2025-04-05T20:27:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162196#p162196</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: беспрестанно посылает клавишу, даже если клавиша-ключ не нажата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162195#p162195" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Indrik]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29749</uri>
			</author>
			<updated>2025-04-05T20:19:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162195#p162195</id>
		</entry>
</feed>
