<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8581&amp;type=atom" />
	<updated>2026-07-11T01:39:00Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8581</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=163458#p163458" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong><br />А можете предложить вариант, как делать динамические комбо с клавишами как аналог определений типа 1 &amp; 2::.<br />То есть зажатие клавиши 1 делает ее шифтом и включает хоткей для клавиши 2, а при отжатии отключает обратно.</p><p>Спрашиваю потому, что столкнулся со странным глюком одиночный нажатий при определении комбо с этими клавишами.<br /></p><div class="codebox"><pre><code>
1::1 ; срабатывает для одиночных нажатий клавиши при отжатии клавиши
2::2 ; -//-
1 &amp; 2::3 ; срабатывает при нажатии 1 + 2, автоповтор
2 &amp; 1::4 ; срабатывает при нажатии 2 + 1, -//-
</code></pre></div><p>Если просто нажать и отпустить 1 на разных устройствах ввода, то работает нормально. То же самое для 2.<br />Если зажать пробел и потом нажать и отпустить 1 или 2 на одном устройстве ввода, то тоже работает нормально.<br />Если зажать пробел на одном устройстве ввода, а 1 или 2 на другом - одиночное нажатие и отпускание не работает, хотя комбо работают нормально.<br />Возможно можно решить эту проблему через динамические назначения хоткеев?<br />Что-то типа такого :<br /></p><div class="codebox"><pre><code>
1::
  down_1:=1
  hotkey 2,down_1_2
return
1 up::
  hotkey 2,off
  if down_1
    send 1
return
2::
  down_2:=1
  hotkey 1,down_2_1
return
2 up::
  hotkey 1,off
  if down_2
    send 2
return
down_1_2:
  send 3
  down_1:=0
return
down_2_1:
  send 4
  down_2:=0
return
</code></pre></div><p>Проблема в том, что у меня так нормально не работает - после первого же отключения хоткея одиночное нажатие клавиши перестает работать вообще.</p>]]></content>
			<author>
				<name><![CDATA[ant_serg57]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=42480</uri>
			</author>
			<updated>2026-07-11T01:39:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=163458#p163458</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74609#p74609" />
			<content type="html"><![CDATA[<p>Почти как в том &quot;Ералаше&quot;: &quot;Я понял что они не пересекаются! Я не понял <strong>почему</strong> они не пересекаются!&quot;&nbsp; &nbsp;<br />&nbsp; Нажатие на &quot;-&quot; обращается к <br />Hotkey, %k1%, Label1<br />это строка обращается к <br />Hotkey, IF, State()<br />она в свою очередь запускает <br />State() <br />и получив ответ решает запускать Label1 или нет. Вроде понятно, но никогда в справке я ничего не видел по поводу необходимости завершения с помощью &quot;Hotkey, IF&quot;. По аналогии с #IF я догадываюсь зачем это нужно, но вот нигде этого не встречал.</p>]]></content>
			<author>
				<name><![CDATA[Pokerist]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24990</uri>
			</author>
			<updated>2013-08-15T22:12:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74609#p74609</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74608#p74608" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>принцип работы всей комбинации из от &quot;#IF State&quot; до &quot;Hotkey, IF&quot; мне ясен постольку-поскольку.</p></blockquote></div><p>Я уже сам запутался. Всё понятно, или наоборот всё стало непонятно.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-08-15T21:35:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74608#p74608</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74607#p74607" />
			<content type="html"><![CDATA[<p>Вот так даже мне понятно получается:<br /></p><div class="codebox"><pre><code>
Global k1 := &quot;-&quot;
Global k2 := &quot;q&quot;

#IF State()
#IF
Hotkey, IF, State()
Hotkey, %k1%, Label1 
Hotkey, %k2%, Label2
Hotkey, IF
Return

State() {
    WinGetActiveTitle, Name
    IfInString, Name, Блокнот
        Return 1
    Return 0
}
    
Label1:
    {
    Send, {+}
    }
return
    
Label2:
    {
    Send, qwerty
    }
return    
</code></pre></div><p>&nbsp; &nbsp; &nbsp; &nbsp;Работает, компактно пишется, легко находится, хотя принцип работы всей комбинации из от &quot;#IF State&quot; до &quot;Hotkey, IF&quot; мне ясен постольку-поскольку. По крайней мере я никогда не догадался поставить между #if только функцию проверки, а все хоткеи заключить между &quot;Hotkey, IF&quot;</p><p>&nbsp; &nbsp;Спасибо!</p>]]></content>
			<author>
				<name><![CDATA[Pokerist]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24990</uri>
			</author>
			<updated>2013-08-15T21:30:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74607#p74607</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74605#p74605" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Что Вы имеете ввиду? Всё равно ведь под каждый хоткей надо создавать собственную, поскольку &quot;MyAction()&quot; для каждого своя.</p></blockquote></div><p>Я подумал что условие одно. Ну а какая кнопка, уже можно потом проверить. </p><p>АП. А в случае #if и проверять не надо.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-08-15T20:40:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74605#p74605</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74604#p74604" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Мне мои кривые 30 строк понятны и близки. Я понимаю, что их можно превратить в красивые 6-7</p></blockquote></div><p>Да боже упаси их трогать руками, я то про:<br /></p><div class="codebox"><pre><code>
Global Var := 1

#IF State()
#IF
Hotkey, IF, State()
Hotkey, 1, Hotkey ; Нажми 1 
Hotkey, IF
Return

State() {
    IF Var
        Return 1
    Return 0
}
    
Hotkey:
    MsgBox Нажал 1? Значит Var имеет значение.
</code></pre></div><p>а вы про что?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-08-15T20:39:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74604#p74604</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74603#p74603" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Ekklesiast пишет:</cite><blockquote><p><strong>Pokerist</strong>, а вы для какого рума пишите скрипт ? ))))</p></blockquote></div><p>&nbsp; Для собственного <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />))</p>]]></content>
			<author>
				<name><![CDATA[Pokerist]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24990</uri>
			</author>
			<updated>2013-08-15T20:28:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74603#p74603</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74602#p74602" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>И всё же в контексте вашего вопроса думаю что уместно привести и енто самое секретное условие срабатывания хоткея. Как, Вы считаете?</p></blockquote></div><p>&nbsp; Не стоит. Мне мои кривые 30 строк понятны и близки. Я понимаю, что их можно превратить в красивые 6-7, но через неделю я потрачу час чтобы понять что там и как. Главное, что они работают&nbsp; с устраивающей меня скоростью и дают нужный результат. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />&nbsp; Если бы сокращение процедуры влияло на возможность применения #if - тогда другое дело.</p><br /><div class="quotebox"><blockquote><p>Хоткеев много, а MyProc одна...</p></blockquote></div><p>&nbsp; Что Вы имеете ввиду? Всё равно ведь под каждый хоткей надо создавать собственную, поскольку &quot;MyAction()&quot; для каждого своя.</p>]]></content>
			<author>
				<name><![CDATA[Pokerist]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24990</uri>
			</author>
			<updated>2013-08-15T20:26:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74602#p74602</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74590#p74590" />
			<content type="html"><![CDATA[<p><strong>Pokerist</strong>, а вы для какого рума пишите скрипт ? ))))</p>]]></content>
			<author>
				<name><![CDATA[Hydrogenium]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30160</uri>
			</author>
			<updated>2013-08-15T19:08:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74590#p74590</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74588#p74588" />
			<content type="html"><![CDATA[<p>Хоткеев много, а MyProc одна...<br />И всё же в контексте вашего вопроса думаю что уместно привести и енто самое секретное условие срабатывания хоткея. Как, Вы считаете?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-08-15T18:53:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74588#p74588</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74585#p74585" />
			<content type="html"><![CDATA[<p>Довольно заморочливо, особенно, если хоткеев много.</p>]]></content>
			<author>
				<name><![CDATA[Pokerist]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24990</uri>
			</author>
			<updated>2013-08-15T18:49:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74585#p74585</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74584#p74584" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>целая процедура на 30 строк?</p></blockquote></div><p>Так вы приведите эти 30 строк, а там уже будет...</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-08-15T18:45:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74584#p74584</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74581#p74581" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Pokerist пишет:</cite><blockquote><p>Я уже применял #if для ограничения срабатывания горячей клавиши только в определённых окнах. <br /></p><div class="quotebox"><blockquote><p>Hotkey, IfWinActive/Exist [, WinTitle, WinText]</p></blockquote></div><p> тоже может выполнить эту функцию, но как поступить, если проверка на &quot;правильность&quot; заголовка окна - целая процедура на 30 строк?<br />&nbsp; Можно конечно постоянно перебирать все окна и хранить в памяти заголовки нужных, но мне кажется должен быть предусмотрен более простой способ.<br />&nbsp; Помогите, пожалуйста, им воспользоваться.<br />&nbsp; Заранее, спасибо!</p></blockquote></div><p>я делаю так:</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>MyKey = ~y

Hotkey, %MyKey%, MyProc

MyProc:   
    WinGet, active_id, ID, A         
    if WinActive(&quot;ahk_id&quot; active_id)
    {   
         if CheckWin() ; функция проверки окна
             MyAction() ;
    }
Return</code></pre></div></div></div>]]></content>
			<author>
				<name><![CDATA[Hydrogenium]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30160</uri>
			</author>
			<updated>2013-08-15T18:18:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74581#p74581</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Как применять #if,если хоткей  выполняется через метку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=74580#p74580" />
			<content type="html"><![CDATA[<p>Я уже применял #if для ограничения срабатывания горячей клавиши только в определённых окнах. <br /></p><div class="quotebox"><blockquote><p>Hotkey, IfWinActive/Exist [, WinTitle, WinText]</p></blockquote></div><p> тоже может выполнить эту функцию, но как поступить, если проверка на &quot;правильность&quot; заголовка окна - целая процедура на 30 строк?<br />&nbsp; Можно конечно постоянно перебирать все окна и хранить в памяти заголовки нужных, но мне кажется должен быть предусмотрен более простой способ.<br />&nbsp; Помогите, пожалуйста, им воспользоваться.<br />&nbsp; Заранее, спасибо!</p>]]></content>
			<author>
				<name><![CDATA[Pokerist]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24990</uri>
			</author>
			<updated>2013-08-15T18:08:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=74580#p74580</id>
		</entry>
</feed>
