You've already forked SmartConfigurator
mirror of
https://github.com/ret-Phoenix/SmartConfigurator.git
synced 2026-06-13 22:34:24 +02:00
094741c2e2
Добавил структуру конфигурации ДО, для примера работы генератора кода. Переменовал скрипты Переработал документацию Что-то по мелочам.
259 lines
7.6 KiB
AutoHotkey
259 lines
7.6 KiB
AutoHotkey
Menu, Tray, Icon, Shell32.dll, 45
|
|
|
|
Height := 165 ; âûñîòà êëèåíòñêîé îáëàñòè, íå âêëþ÷àÿ çàãîëîâêè âêëàäîê
|
|
|
|
Gui, +AlwaysOnTop -DPIScale
|
|
Gui, Color, DAD6CA
|
|
Gui, Add, Tab2, vTab gTab x0 y0 w200 h185 AltSubmit hwndhTab, Ïîëó÷èòü êîä|Êëàâèøà ïî êîäó
|
|
Tab = 2
|
|
VarSetCapacity(RECT, 16)
|
|
SendMessage, TCM_GETITEMRECT := 0x130A, 1, &RECT,, ahk_id %hTab%
|
|
TabH := NumGet(RECT, 12, "UInt")
|
|
GuiControl, Move, Tab, % "x0 y0 w200 h" TabH + Height
|
|
Gui, Add, Text, % "x8 y" TabH + 8 " w183 +" SS_GRAYFRAME := 0x8 " h" Height - 16
|
|
|
|
Gui, Font, q5 s12, Verdana
|
|
Gui, Add, Text, vAction x15 yp+7 w170 Center c0033BB, Íàæìèòå êëàâèøó
|
|
Gui, Add, Text, vKey xp yp+35 wp Center Hidden
|
|
|
|
Gui, Font, q5 c333333
|
|
Gui, Add, Text, vTextVK xp+8 yp+37 Hidden, vk =
|
|
Gui, Add, Text, vVK xp+35 yp w62 h23 Center Hidden
|
|
Gui, Add, Text, vTextSC xp-35 yp+35 Hidden, sc =
|
|
Gui, Add, Text, vSC xp+35 yp w62 h23 Center Hidden
|
|
|
|
Gui, Font, s8
|
|
Gui, Add, Button, vCopyVK gCopy xp+70 yp-35 w50 h22 Hidden, Copy
|
|
Gui, Add, Button, vCopySC gCopy xp yp+33 wp hp Hidden, Copy
|
|
|
|
Gui, Tab, 2
|
|
Gui, Add, Text, % "x8 y" TabH + 8 " w183 +" SS_GRAYFRAME " h" Height - 16
|
|
Gui, Add, Text, x15 yp+7 w170 c0033BB
|
|
, Ââåäèòå êîä`nâ øåñòíàäöàòåðè÷íîì ôîðìàòå áåç ïðåôèêñà "0x"
|
|
|
|
Gui, Font, q5 s11
|
|
Gui, Add, Text, xp yp+58, vk
|
|
Gui, Add, Edit, vEditVK gGetKey xp+25 yp-2 w45 h23 Limit2 Uppercase Center
|
|
Gui, Add, Text, vKeyVK xp+45 yp+2 w105 Center
|
|
|
|
Gui, Add, Text, x15 yp+43, sc
|
|
Gui, Add, Edit, vEditSC gGetKey xp+25 yp-2 w45 h23 Limit3 Uppercase Center
|
|
Gui, Add, Text, vKeySC xp+45 yp+2 w105 Center
|
|
Gui, Show, % "w199 h" TabH + Height - 1, Êîäû êëàâèø
|
|
|
|
hHookKeybd := SetWindowsHookEx()
|
|
OnExit, Exit
|
|
OnMessage(0x6, "WM_ACTIVATE")
|
|
OnMessage(0x102, "WM_CHAR")
|
|
Return
|
|
|
|
Tab:
|
|
If (Tab = 2 && !hHookKeybd)
|
|
hHookKeybd := SetWindowsHookEx()
|
|
Else if (Tab = 1 && hHookKeybd)
|
|
DllCall("UnhookWindowsHookEx", UInt, hHookKeybd), hHookKeybd := ""
|
|
Return
|
|
|
|
Copy:
|
|
GuiControlGet, Code,, % SubStr(A_GuiControl, -1)
|
|
StringLower, GuiControl, A_GuiControl
|
|
Clipboard := SubStr(GuiControl, -1) . SubStr(Code, 3)
|
|
Return
|
|
|
|
GetKey:
|
|
GuiControlGet, Code,, % A_GuiControl
|
|
tipe := SubStr(A_GuiControl, -1)
|
|
Key := GetKeyName(tipe . Code)
|
|
GuiControl,, % "Key" . tipe, % Key
|
|
Return
|
|
|
|
GuiClose:
|
|
ExitApp
|
|
|
|
Exit:
|
|
if hHookKeybd
|
|
DllCall("UnhookWindowsHookEx", Ptr, hHookKeybd)
|
|
ExitApp
|
|
|
|
WM_ACTIVATE(wp)
|
|
{
|
|
global
|
|
if (wp & 0xFFFF = 0 && hHookKeybd)
|
|
DllCall("UnhookWindowsHookEx", UInt, hHookKeybd), hHookKeybd := ""
|
|
if (wp & 0xFFFF && Tab = 2 && !hHookKeybd)
|
|
hHookKeybd := SetWindowsHookEx()
|
|
GuiControl,, Action, % wp & 0xFFFF = 0 ? "Àêòèâèðóéòå îêíî" : "Íàæìèòå êëàâèøó"
|
|
}
|
|
|
|
SetWindowsHookEx()
|
|
{
|
|
Return DllCall("SetWindowsHookEx" . (A_IsUnicode ? "W" : "A")
|
|
, Int, WH_KEYBOARD_LL := 13
|
|
, Ptr, RegisterCallback("LowLevelKeyboardProc", "Fast")
|
|
, Ptr, DllCall("GetModuleHandle", UInt, 0, Ptr)
|
|
, UInt, 0, Ptr)
|
|
}
|
|
|
|
LowLevelKeyboardProc(nCode, wParam, lParam)
|
|
{
|
|
static once, WM_KEYDOWN = 0x100, WM_SYSKEYDOWN = 0x104
|
|
|
|
Critical
|
|
SetFormat, IntegerFast, H
|
|
vk := NumGet(lParam+0, "UInt")
|
|
Extended := NumGet(lParam+0, 8, "UInt") & 1
|
|
sc := (Extended<<8)|NumGet(lParam+0, 4, "UInt")
|
|
Key := GetKeyName("vk" SubStr(vk, 3) " sc" SubStr(sc, 3))
|
|
|
|
if (wParam = WM_SYSKEYDOWN || wParam = WM_KEYDOWN)
|
|
{
|
|
GuiControl,, Key, % Key
|
|
GuiControl,, VK, % vk
|
|
GuiControl,, SC, % sc
|
|
}
|
|
|
|
if !once
|
|
{
|
|
Controls := "Key|TextVK|VK|TextSC|SC|CopyVK|CopySC"
|
|
Loop, parse, Controls, |
|
|
GuiControl, Show, % A_LoopField
|
|
once = 1
|
|
}
|
|
|
|
if Key Contains Control,Alt,Shift,Tab
|
|
Return CallNextHookEx(nCode, wParam, lParam)
|
|
|
|
if (Key = "F4" && GetKeyState("Alt", "P")) ; çàêðûòèå îêíà è âûõîä ïî Alt + F4
|
|
Return CallNextHookEx(nCode, wParam, lParam)
|
|
|
|
Return nCode < 0 ? CallNextHookEx(nCode, wParam, lParam) : 1
|
|
}
|
|
|
|
CallNextHookEx(nCode, wp, lp)
|
|
{
|
|
Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, UInt, wp, UInt, lp)
|
|
}
|
|
|
|
WM_CHAR(wp)
|
|
{
|
|
global hBall
|
|
SetWinDelay, 0
|
|
CoordMode, Caret
|
|
WinClose, ahk_id %hBall%
|
|
GuiControlGet, Focus, Focus
|
|
if !InStr(Focus, "Edit")
|
|
Return
|
|
|
|
if wp in 3,8,24,26 ; îáðàáîòêà Ctrl + C, BackSpace, Ctrl + X, Ctrl + Z
|
|
Return
|
|
|
|
if wp = 22 ; îáðàáîòêà Ctrl + V
|
|
{
|
|
GuiControlGet, Content,, % Focus
|
|
if !StrLen(String := SubStr(Clipboard, 1, 3 - StrLen(Content)))
|
|
{
|
|
ShowBall("Áóôåð îáìåíà íå ñîäåðæèò òåêñòà.", "Îøèáêà!")
|
|
Return 0
|
|
}
|
|
Loop, parse, String
|
|
{
|
|
Text .= A_LoopField
|
|
if A_LoopField not in 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,A,B,C,D,E,F
|
|
{
|
|
ShowBall("Áóôåð îáìåíà ñîäåðæèò íåäîïóñòèìûå ñèìâîëû."
|
|
. "`nÄîïóñòèìûå ñèìâîëû:`n0123456789ABCDEF", "Îøèáêà!")
|
|
Return 0
|
|
}
|
|
}
|
|
Control, EditPaste, % Text, % Focus, Êîäû êëàâèø
|
|
Return 0
|
|
}
|
|
|
|
Char := Chr(wp)
|
|
if Char not in 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,A,B,C,D,E,F
|
|
{
|
|
ShowBall("Äîïóñòèìûå ñèìâîëû:`n0123456789ABCDEF", Char " — íåäîïóñòèìûé ñèìâîë")
|
|
Return 0
|
|
}
|
|
Return
|
|
}
|
|
|
|
ShowBall(Text, Title="")
|
|
{
|
|
global
|
|
WinClose, ahk_id %hBall%
|
|
hBall := TrackToolTip(Text, A_CaretX+1, A_CaretY+15, Title)
|
|
SetTimer, BallDestroy, -2000
|
|
Return
|
|
|
|
BallDestroy:
|
|
WinClose, ahk_id %hBall%
|
|
Return
|
|
}
|
|
|
|
TrackToolTip( sText
|
|
, x = "" ; åñëè íå óêàçàíû, òî âáëèçè êóðñîðà
|
|
, y = ""
|
|
, sTitle = ""
|
|
, h_icon = 0 ; h_icon — 0: None, 1:Info, 2: Warning, 3: Error, n > 3: ïðåäïîëàãàåòñÿ hIcon
|
|
, CloseButton = 0
|
|
, nColorBack = 0xFFFFE1
|
|
, nColorText = 0
|
|
, BallonTip = 0 ; BalloonTip — ýòî ToolTip ñ õâîñòèêîì
|
|
, w = 400 ) ; ìàêñèìàëüíàÿ øèðèíà
|
|
{
|
|
TTS_NOPREFIX := 2, TTS_ALWAYSTIP := 1, TTS_BALLOON := 0x40, TTS_CLOSE := 0x80
|
|
|
|
hWnd := DllCall("CreateWindowEx", UInt, WS_EX_TOPMOST := 8
|
|
, Str, "tooltips_class32", Str, ""
|
|
, UInt, TTS_NOPREFIX|TTS_ALWAYSTIP|(CloseButton ? TTS_CLOSE : 0)|(BallonTip ? TTS_BALLOON : 0)
|
|
, Int, 0, Int, 0, Int, 0, Int, 0
|
|
, Ptr, 0, Ptr, 0, Ptr, 0, Ptr, 0)
|
|
|
|
if (x = "" || y = "")
|
|
{
|
|
CoordMode, Mouse
|
|
MouseGetPos, xtt, ytt
|
|
xtt := x = "" ? xtt + 10 : x
|
|
ytt := y = "" ? ytt + 10 : y
|
|
}
|
|
Else
|
|
xtt := x, ytt := y
|
|
|
|
NumPut(VarSetCapacity(TOOLINFO, A_PtrSize = 4 ? 48 : 72, 0), TOOLINFO, "UInt")
|
|
NumPut(0x20, TOOLINFO, 4, "UInt") ; TTF_TRACK = 0x20
|
|
NumPut(&sText, TOOLINFO, A_PtrSize = 4 ? 36 : 48, "UInt")
|
|
|
|
DHW := A_DetectHiddenWindows
|
|
DetectHiddenWindows, On
|
|
WinWait, ahk_id %hWnd%
|
|
|
|
WM_USER := 0x400
|
|
SendMessage, WM_USER + 24,, w ; TTM_SETMAXTIPWIDTH
|
|
SendMessage, WM_USER + (A_IsUnicode ? 50 : 4),, &TOOLINFO ; TTM_ADDTOOL
|
|
SendMessage, WM_USER + (A_IsUnicode ? 33 : 32), h_icon, &sTitle ; TTM_SETTITLEA è TTM_SETTITLEW
|
|
SendMessage, WM_USER + (A_IsUnicode ? 57 : 12),, &TOOLINFO ; TTM_UPDATETIPTEXTA è TTM_UPDATETIPTEXTW
|
|
SendMessage, WM_USER + 18,, xtt|(ytt<<16) ; TTM_TRACKPOSITION
|
|
SendMessage, WM_USER + 17, 1, &TOOLINFO ; TTM_TRACKACTIVATE
|
|
|
|
if BallonTip
|
|
xMax := A_ScreenWidth, yMax := A_ScreenHeight
|
|
else
|
|
{
|
|
WinGetPos,,, W, H
|
|
xMax := A_ScreenWidth - W - 10
|
|
yMax := A_ScreenHeight - H - 10
|
|
}
|
|
|
|
if (xtt > xMax || ytt > yMax)
|
|
{
|
|
WinHide
|
|
xtt := xtt > xMax ? xMax : xtt
|
|
ytt := ytt > yMax ? yMax : ytt
|
|
SendMessage, 1042,, xtt|(ytt<<16) ; TTM_TRACKPOSITION
|
|
WinShow
|
|
}
|
|
|
|
DetectHiddenWindows, % DHW
|
|
Return hWnd
|
|
} |