276

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

Gutalin пишет:

функциональных изменений я не замечаю

Так и задумано.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

277

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

serzh82saratov, возможно сделать фон ввода белым? Как в обычных Edit'ах?

AutoHotkey - 1.1.29.01

278

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

В Hotkey_Add в первом параметре напишите -ReadOnly, или сразу для всех - Hotkey_Arr("ControlOption", "-ReadOnly").

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

279

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

serzh82saratov, зачем был добавлен +ReadOnly? Спрашиваю за тем, что, не перестанет ли код работать в определённых ситуациях  из-за -ReadOnly ?

AutoHotkey - 1.1.29.01

280

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

Можно будет ввести текст если нет опции К, но может и ещё как, я не гарантирую.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

281

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

serzh82saratov, опция K есть, поэтому и не заметил разницы,спасибо за объяснения.

AutoHotkey - 1.1.29.01

282

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

Кстати есть очень хороший пример от teadrinker.
Можно установить любые цвета, и ReadOnly убирать не надо.


#NoEnv
#SingleInstance Force
Gui, +AlwaysOnTop
Hotkey_IniPath(A_ScriptDir "\Hotkey.ini"), Hotkey_IniSection("Hotkeys")
Hotkey_Add("w300", "MyHotkey1", "G1KD", "*", "Save")
Hotkey_Add("wp y+10", "MyHotkey2", "G1KMLRJ", "*", "Save")
Gui, Add, Edit, Center vText wp
for name, hwnd in Hotkey_Arr("AllHotkeys")
	SetStaticColor(hwnd, 0x0000FF, 0xFFFFFF) 
Gui, Show
Return

Save(Name) { 
    GuiControl, , Text, % Name " = " Hotkey_Write(Name)
}

GuiClose() {
    ExitApp
}

SetStaticColor(hStatic, b_color, f_color)
{
	static arr := [], GWL_WNDPROC := -4
	hGui := DllCall("GetParent", Ptr, hStatic, Ptr)
	if !arr.HasKey(hGui)  {
		arr[hGui] := {}, arr[hGui].Statics := []
		arr[hGui].ProcOld := DllCall("SetWindowLong" . (A_PtrSize = 8 ? "Ptr" : ""), Ptr, hGui, Int, GWL_WNDPROC
												, Ptr, RegisterCallback("WindowProc", "", 4, Object(arr[hGui])), Ptr)
	}
	else if arr[hGui].Statics.HasKey(hStatic)
		DllCall("DeleteObject", Ptr, arr[hGui].Statics[hStatic].hBrush)
	arr[hGui].Statics[hStatic] := { b_color: Rgb2Bgr(b_color), f_color: Rgb2Bgr(f_color)
											, hBrush: DllCall("CreateSolidBrush", UInt, Rgb2Bgr(b_color), Ptr) }
	WinSet, Redraw,, ahk_id %hGui%
}

WindowProc(hwnd, uMsg, wParam, lParam)
{
	Critical
	static WM_CTLCOLORSTATIC := 0x138
	obj := Object(A_EventInfo)
	if (uMsg = WM_CTLCOLORSTATIC && k := obj.Statics[lParam])  {
		DllCall("SetBkColor", Ptr, wParam, UInt, k.b_color)
		DllCall("SetTextColor", Ptr, wParam, UInt, k.f_color)
		Return k.hBrush
	}
	Return DllCall("CallWindowProc", Ptr, obj.ProcOld, Ptr, hwnd, UInt, uMsg, Ptr, wParam, Ptr, lParam)
}
	
Rgb2Bgr(color)
{
	Return (color & 0xff) << 16 | ((color >> 8) & 0xff) << 8 | color >> 16
}
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

283

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

Приветствую, по аналогии с

#SingleInstance Force
#NoEnv
#UseHook

Hotkey_IniPath("Hotkey.ini")
Hotkey_IniSection("Hotkeys")
Gui, Add, Text, w300 +Center, Send
Hotkey_Add("wp", "Send", "KMLRJ", "*", "fSend")
Gui, Add, Text, wp y+10 +Center, Press
Hotkey_Add("wp y+10", "Press", "KMLRJ", "*", "fPress")
Gui, Add, Edit, wp y+20 r22
Gui, Show
fPress(), fSend()  ;	назначаем хоткей и строку для Send
return

fPress() {
	Static PrKey_Press
	Hotkey, % PrKey_Press, Off, UseErrorLevel
	PrKey_Press := Hotkey_Write("Press")
	Hotkey, % PrKey_Press, lPress, On, UseErrorLevel  
}

fSend() {
	Global
	Str_Send := Hotkey_HKToSend(Hotkey_Write("Send"), 3) 
}

lPress: 
	SendInput % Str_Send
	return

GuiClose() {
    ExitApp
}

Пытаюсь написать 

Flux:
If (space_Flux and GetKeyState("Space")) {
send, {%Group_2%}
Send, {%Flux%}
send, {%Group_1%}
} Else {
Send, {%Flux%}
}
return

Вот так примерно у меня вышло ВАРИАНТ 1

fFlux() {
	Static PrKey_Press
	Hotkey, % PrKey_Press, Off, UseErrorLevel
	PrKey_Press := Hotkey_Write("Flux")
	Hotkey, % PrKey_Press, lPress, On, UseErrorLevel
	If (space_Flux and GetKeyState("Space")) {
	Str_Send := Hotkey_HKToSend(Hotkey_Write("Group_2"))		
	Str_Send := Hotkey_HKToSend(Hotkey_Write("Flux"))		
	Str_Send := Hotkey_HKToSend(Hotkey_Write("Group_1"))		
	} Else {
	Str_Send := Hotkey_HKToSend(Hotkey_Write("Flux"))
}
}

fGroup_1() {
	Global
	Str_Send := Hotkey_HKToSend(Hotkey_Write("Group_1")) 
}

fGroup_2() {
	Global
	Str_Send := Hotkey_HKToSend(Hotkey_Write("Group_2")) 
}

lPress: 
	SendInput % Str_Send
	return

Вариант 2

fFlux() {
	Static PrKey_Press
	Hotkey, % PrKey_Press, Off, UseErrorLevel
	PrKey_Press := Hotkey_Write("Flux")
	Hotkey, % PrKey_Press, lPress, On, UseErrorLevel
}
 
flux() {
	Global
	If (space_Flux and GetKeyState("Space")) {
	Str_Send := Hotkey_HKToSend(Hotkey_Write("Group_2"))		
	Str_Send := Hotkey_HKToSend(Hotkey_Write("Flux"))		
	Str_Send := Hotkey_HKToSend(Hotkey_Write("Group_1"))		
	} Else {
	Str_Send := Hotkey_HKToSend(Hotkey_Write("Flux"))
}
}

fGroup_1() {
	Static PrKey_Press
	Hotkey, % PrKey_Press, Off, UseErrorLevel
	PrKey_Press := Hotkey_Write("Group_1")
	Hotkey, % PrKey_Press, On, UseErrorLevel
}


fGroup_2() {
	Static PrKey_Press
	Hotkey, % PrKey_Press, Off, UseErrorLevel
	PrKey_Press := Hotkey_Write("Group_2")
	Hotkey, % PrKey_Press, On, UseErrorLevel
}

lPress: 
	SendInput % Str_Send
	return

Всё делал по аналогии, в чём же может быть проблема? Понимаю, что глупость скорей всего в коде написал, ну очень тяжело даётся мне этот видоизмененный AHK)))) Вот как кнопки объявлял

Hotkey_Add("x22 y79 w45 h20", "Flux", "G1KMLRJ", "*", "fFlux")
Hotkey_Add("x22 y195 w100 h20", "Group_1", "G1KMLRJ", "*", "fGroup_1")
Hotkey_Add("x144 y195 w100 h20", "Group_2", "G1KMLRJ", "*", "fGroup_2")
fFlux(), fGroup_1(), fGroup_2()
Gui, Show, w1045 h579

284

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

Попробовал такой вариант

Ok:
	Hotkey, % PrKey_Flux, Off, UseErrorLevel
	PrKey_Flux := Hotkey_Write("Flux")
	Hotkey, % PrKey_Flux, Flux, On, UseErrorLevel
	
	Hotkey, % PrKey_Group_1, Off, UseErrorLevel
	PrKey_Group_1 := Hotkey_Write("Group_1")
	Hotkey, % PrKey_Group_1, Group_1, On, UseErrorLevel
	
	Hotkey, % PrKey_Group_2, Off, UseErrorLevel
	PrKey_Group_2 := Hotkey_Write("Group_2")
	Hotkey, % PrKey_Group_2, Group_2, On, UseErrorLevel
return

Flux:
If (space_Flux and GetKeyState("Space")) {
send, % PrKey_Group_2
send, % PrKey_Flux
send, % PrKey_Group_1
} Else {
send, % PrKey_Flux
}
return

Всё сохраняет и работает, но пишит лишь скан кодами, чувствую что где-то рядом топчусь. Пробовал заменить

	PrKey_Flux := Hotkey_Write("Flux")

на это

	PrKey_Flux := Hotkey_HKToSend(Hotkey_Write("Flux"))

Но  тогда перестаёт работать конструкция Flux: