301

Re: AHK: Замена стандартного элемента управления "Hotkey"

Так ещё исправьте.


Terminator() {
	ControlGetFocus, ControlNN, A
	ControlGet, hFocus, Hwnd, , %ControlNN%, A 
	If (Hotkey_ID(hFocus) = "")
		Return
	GuiControlGet, FocusTab,, TabMain 
	GuiControl, Focus, % FocusTab = "Основная" ? "Dummy3" : FocusTab = "Дополнительная" ? "Dummy3" : ""
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

302 (изменено: serzh82saratov, 2020-10-19 16:24:17)

Re: AHK: Замена стандартного элемента управления "Hotkey"

Vitalkerrain пишет:

а вот если бы было много табов, тем боле внутри друг друга, то думаю уже было бы сложнее выкручиваться.

Хотя нет, костыль можно упростить.


#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
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

303

Re: AHK: Замена стандартного элемента управления "Hotkey"

serzh82saratov Я думаю это нужно добавить в шапку, это просто гениально ещё раз огромная вам благодарность.
Вот это вообще прикол, не догадался бы

Gui, Add, Edit, x0 y0 w0 h0  ; Добавлено только чтобы при включении вкладки фокус не был на хоткее

304 (изменено: serzh82saratov, 2020-10-19 17:25:14)

Re: AHK: Замена стандартного элемента управления "Hotkey"

Выложил новую версию, костыли не нужны. Добавил OnFocus, в данном случае полезно для сброса таймера.


#SingleInstance Force
#NoEnv
#UseHook
#IF !Hotkey_Arr("Hook")
#IF

Hotkey_Arr("OnFocus", Func("OnFocusFunc"))  
Hotkey_IniPath("Hotkey.ini")
Hotkey_IniSection("Hotkeys")

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 +ReadOnly  ; Добавлено только чтобы при включении вкладки фокус не был на хоткее, можно убрать
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
Gui, Add, Edit, wp y+20 r10
FuncPress("Press" A_Index), FuncSend("Send" A_Index)

Gui, Tab, Дополнительная
Gui, Add, Edit, x0 y0 w0 h0 +ReadOnly  ; Добавлено только чтобы при включении вкладки фокус не был на хоткее, можно убрать
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
Gui, Add, Edit, wp y+20 r10 
FuncPress("Press" 1), FuncSend("Send" 1)

Gui, Show 
return 

FuncPress(name) {
	Static PrKey := {}  
	SetTimer, Hotkey_KillFocus, -500  
	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
}

OnFocusFunc(name) { 
	SetTimer, Hotkey_KillFocus, -500
}

FuncSend(name) { 
	SetTimer, Hotkey_KillFocus, -500  
	Hotkey_Arr("User")["StrSend_" name] := Hotkey_HKToSend(Hotkey_Write(name)) 
}

ActionPress(name) {  
	SendInput % Hotkey_Arr("User")["StrSend_" name]
}

GuiClose() {
    ExitApp
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

305

Re: AHK: Замена стандартного элемента управления "Hotkey"

Vitalkerrain пишет:

Вот это вообще прикол, не догадался бы

Ещё  +ReadOnly надо, я добавил в примере выше.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

306

Re: AHK: Замена стандартного элемента управления "Hotkey"

serzh82saratov Так на много лучше. А главное, что универсально работает, что не может не радовать? А ReadOnly необходимо, чтобы фокус сразу шёл сюда?

307

Re: AHK: Замена стандартного элемента управления "Hotkey"

Нет, просто чтобы туда не печатался текст, зачем память есть.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui