Тема: AHK: Hotkey изменение параметров цвета и как применять?
Я нашол код который меняет цвет букв и фон Hotkey но не смог в нём самостоятельно разобраться, мне нужно понять как под него подставить свои Hotkey.
Ну и желательно если кому будет не сложно объяснить как он работает.
/code
#NoEnv
#SingleInstance Force
Gui, Font, s17, Molot
Gui, Add, Text, Center hwndhText1 gText vTextHotkey1 w222, Нет
Gui, Add, Text, Center hwndhText2 gText vTextHotkey2 wp, Нет
Gui, Add, Hotkey, vHotkey1 gHotkey w0 h0
Gui, Add, Hotkey, vHotkey2 gHotkey wp hp
SetStaticColor(hText1, 0x111111, 0xff3867)
SetStaticColor(hText2, 0d0d0d, 0xFFFFFF)
Gui, Show
Return
GuiClose() {
ExitApp
}
{
Text() {
GuiControl, Focus, % SubStr(A_GuiControl, 5)
}
Hotkey() {
Instr(%A_GuiControl%, "^") && (str .= "Ctrl + ")
Instr(%A_GuiControl%, "+") && (str .= "Shift + ")
Instr(%A_GuiControl%, "!") && (str .= "Alt + ")
HK := str RegExReplace(Format("{:U}", %A_GuiControl%), "[\+!\^]")
GuiControl, , Text%A_GuiControl%, % HK = "" ? "Нет" : HK
}
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
}
}
Я думаю не надо делать 2 отдельных темы по тому поводу
Желательно бы ещё что-бы кто-нибудь ответил как применять переменные из Hotkey например в таком коде
Code
(Здесь нужна переменная с кнопкой из хоткея)::
MsgBox, сработало
return
Буду очень благодарен.