<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Переназначение или отмена Hotkey в GUI]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=17946&amp;type=atom" />
	<updated>2023-09-19T12:57:44Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=17946</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Переназначение или отмена Hotkey в GUI]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=159202#p159202" />
			<content type="html"><![CDATA[<p>т.е. выключение и последующее включение HotKey отменяет первоначальное назначения переменной? Класс, <a href="https://ahk-wiki.ru/hotkey">https://ahk-wiki.ru/hotkey</a><br /> а тут написано что нельзя. Или там говориться о чем то ином. </p><p>В любом случае спасибо, плохо быть неучем...</p>]]></content>
			<author>
				<name><![CDATA[RacalCucumber]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41299</uri>
			</author>
			<updated>2023-09-19T12:57:44Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=159202#p159202</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Переназначение или отмена Hotkey в GUI]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=159201#p159201" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>SetHotkey() {
    static prevHotkey := &quot;&quot;
	GuiControlGet, HK
	if (HK = &quot;&quot;) {
		MsgBox Горячая клавиша не установлена!
		Return
	}
    if (prevHotkey != &quot;&quot;)
        Hotkey, % prevHotkey, Off
	Hotkey, % HK, Label, On
    prevHotkey := HK
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2023-09-19T12:22:32Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=159201#p159201</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Переназначение или отмена Hotkey в GUI]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=159199#p159199" />
			<content type="html"><![CDATA[<p>Добрый день. Есть следующий пример:<br /></p><div class="codebox"><pre><code>Gui, Add, Hotkey, vHK
Gui, Add, Button, gSetHotkey, Set Hotkey
Gui, Show

SetHotkey() {
	global HK
	GuiControlGet, HK
	if (HK = &quot;&quot;) {
		MsgBox Горячая клавиша не установлена!
		Return
	}
	Hotkey, % HK, Label, On
}

Label() {
   hk := SubStr(A_ThisHotkey, 0)
   MsgBox,,, Клавиша нажата, .5
   KeyWait, % hk
   MsgBox,,, Клавиша отпущена, .5
}
</code></pre></div><p>Если, к примеру я хочу изменить или удалить значение HK в запущенном скрипте, то получается, что HK одновременно присвоены два значения, предыдущее и новое. Что бы отменить старое значение HK и назначить новое, нужно добавить запись и чтение переменной HK в ini файл и перезапускать скрипт командой Reload вставив ее после &quot;Hotkey, % HK, Label, On&quot; в подпрограмме SetHotkey() </p><div class="codebox"><pre><code>SetWorkingDir %A_ScriptDir% 

IniRead, HK,  test.ini, HKey, Hotkey
Gui, Add, Hotkey, vHK, %HK%
Gui, Add, Button, gSetHotkey, Set Hotkey
Gui, Show
if Not (HK = &quot;&quot;) {
	Hotkey, % HK, Label, On
}

SetHotkey() {
	global HK
	GuiControlGet, HK
	if (HK = &quot;&quot;) {
		MsgBox Горячая клавиша не установлена!
		Return
	}
	Hotkey, % HK, Label, On
	IniWrite, %HK%,  test.ini, HKey, Hotkey
	Sleep, 100
	Reload
}
Label() {
	hk := SubStr(A_ThisHotkey, 0)
	MsgBox,,, Клавиша нажата, .5
	KeyWait, % hk
	MsgBox,,, Клавиша отпущена, .5
}</code></pre></div><p>Теперь вопрос. А без Reload можно как-то обойтись? </p><p>К чему возник этот вопрос. <br />При использовании вот этого решения по шифрованию скрипта <a href="https://www.autohotkey.com/boards/viewtopic.php?t=42494">https://www.autohotkey.com/boards/viewtopic.php?t=42494</a> скрипт запускается в именованом канале. И после команды Reload скрипт из канала пропадает, после чего закономерно возникает ошибка, что скрипт не найден. Видимо это можно решить снова в лоб, запуском дубликата скрипта и последующим ExitApp родительского, но это как-то уж слишком коряво получается.</p><p>А во-вторых, даже если не использовать шифрование скрипта дрыгание интерфейса после нажатия кнопки подтверждения сохранения нового значения горячей кнопки просто неэстетично...</p><p>Или в рамках AHK эта задача по другому не решается?</p>]]></content>
			<author>
				<name><![CDATA[RacalCucumber]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41299</uri>
			</author>
			<updated>2023-09-19T11:41:13Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=159199#p159199</id>
		</entry>
</feed>
