1 (изменено: gjifh, 2020-07-30 11:55:30)

Тема: 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

Буду очень благодарен.

2

Re: AHK: Hotkey изменение параметров цвета и как применять?

gjifh, предложения должны начинаться с заглавной буквы и заканчиваться точкой. Код должен быть оформлен тегом "code". Исправьте в текущей теме и ещё в 2 сообщениях:
http://forum.script-coding.com/viewtopi … 46#p141146;
http://forum.script-coding.com/viewtopi … 95#p141195.

3

Re: AHK: Hotkey изменение параметров цвета и как применять?

ypppu
Как ставить этот тег я пишу Сode перед каждым кодом и нечего как правильно написать этот тег может # перед ним надо ставить?

4

Re: AHK: Hotkey изменение параметров цвета и как применять?

http://forum.script-coding.com/help.php?section=bbcode

5

Re: AHK: Hotkey изменение параметров цвета и как применять?

Так же, как и в этом сообщении.