<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: HotKey как сохранить сочетание клавиш]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17310&amp;type=atom" />
	<updated>2022-08-14T20:26:42Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=17310</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: HotKey как сохранить сочетание клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=154396#p154396" />
			<content type="html"><![CDATA[<p>Win не поддерживается в Hotkey, как и ещё много кнопок. Если речь про него, вы зачем то удалили код.<br />Когда то делал такое <a href="http://forum.script-coding.com/viewtopic.php?pid=137176#p137176">http://forum.script-coding.com/viewtopi … 76#p137176</a>.<br />На его основе можно добавить Win.<br /></p><div class="codebox"><pre><code>
#NoEnv
#SingleInstance Force  
#KeyHistory 0
ListLines Off
SetBatchLines -1 
#UseHook

Global Data := {}, hGui
Gui, +HwndhGui
Gui, Font, s12, Comic Sans MS

Gui, Add, Text, Center gText Border vTextHotkey1 w300
Gui, Add, Text, Center gText Border vTextHotkey2 wp  

Gui, Show
Gui, Add, Hotkey, vHotkey1 Hidden gHotkey w0 h0
Gui, Add, Hotkey, vHotkey2 Hidden gHotkey wp hp
Return
 

#IF WinActive(&quot;ahk_id&quot; hGui) &amp;&amp; HotkeyFocus(name)
*LWin::
*RWin:: 
	Hotkey(name, 1)  
	KeyWait, LWin 
	KeyWait, RWin  
	Return

*LWin Up::
*RWin Up:: Hotkey(name, 0)  
#IF

HotkeyFocus(byref name) {
	GuiControlGet, name, FocusV
	If (name ~= &quot;^Hotkey\d+$&quot;)
		Return 1
}  

Text() {
	GuiControl, Focus, % SubStr(A_GuiControl, 5) 
}
	
Hotkey(p1, p2 = &quot;&quot;) {  
	If (p1 + 0 = &quot;&quot;)
	{
		Control := p1 
		If p2
			(str .= &quot;Win + &quot;), win := 1
	}	
	Else 
		Control := A_GuiControl
	HK := %Control%
	If !win &amp;&amp; (GetKeyState(&quot;LWin&quot;, &quot;P&quot;) || GetKeyState(&quot;RWin&quot;, &quot;P&quot;))
		win := 1, HK := &quot;#&quot; HK 
	Instr(HK, &quot;#&quot;) &amp;&amp; (str .= &quot;Win + &quot;)
	Instr(HK, &quot;^&quot;) &amp;&amp; (str .= &quot;Ctrl + &quot;)
	Instr(HK, &quot;+&quot;) &amp;&amp; (str .= &quot;Shift + &quot;)
	Instr(HK, &quot;!&quot;) &amp;&amp; (str .= &quot;Alt + &quot;)
	RegExMatch(HK, &quot;S)([\^\+!#]*)(.*?$)&quot;, K)  
	If (!p2 &amp;&amp; K2 != &quot;&quot;)
		Return
	text := str Format(&quot;{:U}&quot;, K2)
	GuiControl, , Text%Control%, % text
	If !Data[Control]
		Data[Control] := {}
	Data[Control].TXT := text
	If (GetKeyVK(K2) = &quot;0&quot;)
		Data[Control].HK := &quot;&quot;
	Else 
		Data[Control].HK := K1 . Format(&quot;vk{:X}&quot;, GetKeyVK(K2))
	GuiControl, Focus, % Control
	; ToolTip % Data[Control].HK  
}
 

GuiClose() {
    ExitApp
} 
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2022-08-14T20:26:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=154396#p154396</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: HotKey как сохранить сочетание клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=154382#p154382" />
			<content type="html"><![CDATA[<p>Спасибо, точно.<br />А в остальном как код на сохранение?, правильный, или можно правильней сделать?</p><p>И подскажите, почему не могу назначить клавишу Win?</p>]]></content>
			<author>
				<name><![CDATA[Logonius]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=42542</uri>
			</author>
			<updated>2022-08-13T11:29:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=154382#p154382</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: HotKey как сохранить сочетание клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=154381#p154381" />
			<content type="html"><![CDATA[<p>У Вас окно создаётся при каждом нажатии на горячую клавишу. В каждом новом окне будут элементы управления, проассоциированные с одной и той же переменной. Естественно скрипт ругнётся &quot;одна и та же переменная не может быть использована более чем в одном элементе управления&quot;. Неправильно каждый раз создавать новое окно. Его нужно сделать заранее, а при нажатии горячей клавиши его следует показывать, либо делать видимым, но не создавать.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2022-08-13T10:46:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=154381#p154381</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: HotKey как сохранить сочетание клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=154379#p154379" />
			<content type="html"><![CDATA[<p>Добавил в начало кода</p><div class="codebox"><pre><code>
IniRead, Key, %Patch%, Main, Key1
GuiControl,, key, %key%
gosub OK
</code></pre></div><p>И все заработало, на сколько правильно я сделал?<br />Если можно более правильный результат.<br />Полный код..</p><div class="codebox"><pre><code>
Del
</code></pre></div><br /><p>И подскажите как убрать ошибку, которая возникает после повторного нажатия сочетания чтоб появилось GUI окно.<br /><span class="postimg"><img src="https://i.imgur.com/EphdHA1.png" alt="https://i.imgur.com/EphdHA1.png" /></span></p>]]></content>
			<author>
				<name><![CDATA[Logonius]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=42542</uri>
			</author>
			<updated>2022-08-13T08:21:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=154379#p154379</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: HotKey как сохранить сочетание клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=154378#p154378" />
			<content type="html"><![CDATA[<p>Добрый день.<br />Написал код, скину командой с одной кнопкой.<br /></p><div class="codebox"><pre><code>
Del
</code></pre></div><p>Как я написал и как я понял, что я написал. При запуске и при нажатии Ctrl+Home появляется GUI окно куда я ввожу сочетание клавиш, при нажатии ОК, оно сохраняется в ini файл сочетание клавиш, в начале кода написал чтоб он считывал с ini файла сочетание.</p><p>Внизу кода есть метка &quot;Activate&quot;, так вот, если назначить клавишу и воспроизвести ее тут же, то все работает, если перезапустить программу, то сочетание уже не работает, если нажать Ctrl+Home, то видно, что сочетание прочитано и добавлена, но метка Activate не работает.</p><p>Цель, чтоб при сочетании клавиш CTRL+Home(или любые другие), выпало окно, я назначил клавиши, они сохранились, и при следующем запуске утилиты, без всяких окно и т.д. утилита начала работать с сохранёнными клавишами в метке &quot;Activate&quot; &quot;Activate2&quot; и т.д.</p><p>Я подозреваю что я не туда добавил считывание ini файла, но я так и не понял куда его сунуть.</p>]]></content>
			<author>
				<name><![CDATA[Logonius]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=42542</uri>
			</author>
			<updated>2022-08-13T07:57:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=154378#p154378</id>
		</entry>
</feed>
