Хотя нет, костыль можно упростить.
#SingleInstance Force
#NoEnv
#UseHook
#IF !Hotkey_Arr("Hook")
#IF
Hotkey_IniPath("Hotkey.ini")
Hotkey_IniSection("Hotkeys")
Gui, +HwndhGui
Gui, Color, 0xFFDD8A, 0xFFFFAA
Gui, Font, s12
Gui, Add, Tab, x0 y0 w233 h25 -Wrap vTabMain , Основная|Дополнительная
Gui, Tab, Основная
Gui, Add, Edit, x0 y0 w0 h0 ; Добавлено только чтобы при включении вкладки фокус не был на хоткее, можно убрать
Gui, Add, Text, cRed x10 y50, Press %A_Index%:
Hotkey_Add("x90 y50 w400 cRed Section", "Press" A_Index, "G1KMLRJD", "*", "FuncPress", "Send" A_Index)
Gui, Add, Text, x10 y90, Send %A_Index%:
Hotkey_Add("x90 y90 w400", "Send" A_Index, "KMLRJ", "*", "FuncSend")
Gui, Add, GroupBox, wp+100 h14 y+10 xm
FuncPress("Press" A_Index), FuncSend("Send" A_Index)й
Gui, Add, Edit, wp y+20 r10
Gui, Tab, Дополнительная
Gui, Add, Edit, x0 y0 w0 h0 ; Добавлено только чтобы при включении вкладки фокус не был на хоткее, можно убрать
Gui, Add, Text, cRed x10 y50, Press 1:
Hotkey_Add("x90 y50 w400 cRed Section", "Press" 1, "G1KMLRJD", "*", "FuncPress", "Send" 1)
Gui, Add, Text, x10 y90, Send 1:
Hotkey_Add("x90 y90 w400", "Send" 1, "KMLRJ", "*", "FuncSend")
Gui, Add, GroupBox, wp+100 h14 y+10 xm
FuncPress("Press" 1), FuncSend("Send" 1)
Gui, Add, Edit, wp y+20 r10
Gui, Tab
Gui, Add, Text, x0 y0 w0 h0 Hidden hwndhDummy
Hotkey_Arr("Focus")[hGui] := hDummy
Gui, Show
SetTimer, Terminator, 500 ; Специально мало поставил, чтобы быстрее отслеживать
return
Terminator() {
Hotkey_KillFocus()
}
FuncPress(name) {
Static PrKey := {}
Hotkey, IF, !Hotkey_Arr("Hook")
Hotkey, % PrKey[name], Off, UseErrorLevel
PrKey[name] := Hotkey_Write(name)
fn := Func("ActionPress").Bind(Hotkey_Arr("BindString")[Name])
Hotkey, % PrKey[name], % fn, On, UseErrorLevel
Hotkey, IF
}
FuncSend(name) {
Hotkey_Arr("User")["StrSend_" name] := Hotkey_HKToSend(Hotkey_Write(name))
}
ActionPress(name) {
SendInput % Hotkey_Arr("User")["StrSend_" name]
}
GuiClose() {
ExitApp
}