<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Переназначение или отмена Hotkey в GUI]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=17946</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=17946&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Переназначение или отмена Hotkey в GUI».]]></description>
		<lastBuildDate>Tue, 19 Sep 2023 12:57:44 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Переназначение или отмена Hotkey в GUI]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=159202#p159202</link>
			<description><![CDATA[<p>т.е. выключение и последующее включение HotKey отменяет первоначальное назначения переменной? Класс, <a href="https://ahk-wiki.ru/hotkey">https://ahk-wiki.ru/hotkey</a><br /> а тут написано что нельзя. Или там говориться о чем то ином. </p><p>В любом случае спасибо, плохо быть неучем...</p>]]></description>
			<author><![CDATA[null@example.com (RacalCucumber)]]></author>
			<pubDate>Tue, 19 Sep 2023 12:57:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=159202#p159202</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначение или отмена Hotkey в GUI]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=159201#p159201</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 19 Sep 2023 12:22:32 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=159201#p159201</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Переназначение или отмена Hotkey в GUI]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=159199#p159199</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (RacalCucumber)]]></author>
			<pubDate>Tue, 19 Sep 2023 11:41:13 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=159199#p159199</guid>
		</item>
	</channel>
</rss>
