;••••••••••••••••••••••••••••••• AHK ••••••••••••••••••••••••••••••••
; Снятие/восстановление выделения с объектов в активной панели по Esc
; Условие: TC 9.0+. Запускать желательно контентным плагином Autorun.
;••••••••••••••••••••••••••••••••••••••••••••••• Автор: Flasher © •••
#NoEnv
#NoTrayIcon
ListLines, Off
#KeyHistory, 0
SetBatchLines,-1
#SingleInstance, Off
DetectHiddenWindows, On
If DupComplete() || RegExMatch(StrGet(DllCall("GetCommandLine",Ptr)), "i)\s/(restart|r|force|f)\s")
ExitApp
DupComplete()
{ WinGet, List, List, % A_ScriptFullPath " ahk_class AutoHotkey"
Loop % List
If WinExist("ahk_id" List%A_Index%) != A_ScriptHwnd && R := true
WinClose
Return R
}
WinWaitClose, ahk_class TTOTAL_CMD
ExitApp
#IfWinActive, ahk_class TTOTAL_CMD
$Esc::
ControlGetFocus, Class, A
If !InStr(Class, "TMyListBox") || WinExist("ahk_class #32768") || MainMenuFocus()
SendInput, {Esc}
Else
{ N := SubStr(Class, 0) = 2 ? 1 : 0
SendMessage, 1074, % 1006-N, 0,, A
Sel := % ErrorLevel
SendMessage, 1074, % 8 - N, 0,, A
ControlGetPos, x, y, w, h,, ahk_id %ErrorLevel%
PixelSearch,,, % x+w-5, % y, % x+w, % y+h/2, 0x333333,, Fast
If ErrorLevel
PostMessage, 0x433, 52 (Sel?4:9),,, A
Else
SendInPut, {Esc}
}
MainMenuFocus()
{ VarSetCapacity(MBI, size := 16 + A_PtrSize*4, 0)
NumPut(size, MBI)
DllCall("GetMenuBarInfo", Ptr, WinExist("A"), Int, 0xFFFFFFFD, Int, 0, Ptr, &MBI)
Return *(&MBI + 16 + A_PtrSize*3) & 1
} |