Вот еще хук для сторонних окон. В данном примере взаимодействие идет с блокнотом:
#SingleInstance Force
#Persistent
SetBatchLines,-1
HookProcAdr := RegisterCallback( "HookProc", "F" ), hWinEventHook := SetWinEventHook( 0x1, 0x17, 0, HookProcAdr, 0, 0, 0 )
Global Message := ["EVENT_SYSTEM_SOUND", "EVENT_SYSTEM_ALERT", "EVENT_SYSTEM_FOREGROUND"
, "EVENT_SYSTEM_MENUSTART", "EVENT_SYSTEM_MENUEND", "EVENT_SYSTEM_MENUPOPUPSTART"
, "EVENT_SYSTEM_MENUPOPUPEND", "EVENT_SYSTEM_CAPTURESTART", "EVENT_SYSTEM_CAPTUREEND"
, "EVENT_SYSTEM_MOVESIZESTART", "EVENT_SYSTEM_MOVESIZEEND", "EVENT_SYSTEM_CONTEXTHELPSTART"
, "EVENT_SYSTEM_CONTEXTHELPEND", "EVENT_SYSTEM_DRAGDROPSTART", "EVENT_SYSTEM_DRAGDROPEND"
, "EVENT_SYSTEM_DIALOGSTART", "EVENT_SYSTEM_DIALOGEND", "EVENT_SYSTEM_SCROLLINGSTART"
, "EVENT_SYSTEM_SCROLLINGEND", "EVENT_SYSTEM_SWITCHSTART", "EVENT_SYSTEM_SWITCHEND"
, "EVENT_SYSTEM_MINIMIZESTART", "EVENT_SYSTEM_MINIMIZEEND"]
SetWinEventHook(eventMin, eventMax, hmodWinEventProc, lpfnWinEventProc, idProcess, idThread, dwFlags)
{
DllCall("CoInitialize", Uint, 0)
return DllCall("SetWinEventHook", Uint,eventMin , Uint,eventMax , Uint,hmodWinEventProc
, Uint,lpfnWinEventProc, Uint,idProcess, Uint,idThread, Uint,dwFlags)
}
HookProc( hWinEventHook, Event, hWnd, idObject, idChild, dwEventThread, dwmsEventTime )
{
if WinExist("ahk_class Notepad") = Hwnd
{
if (Message[Event] = "EVENT_SYSTEM_FOREGROUND")
tooltip Окно блокнота в фокусе
if (Message[Event] = "EVENT_SYSTEM_MINIMIZESTART")
tooltip Окно блокнота свернута
if (Message[Event] = "EVENT_SYSTEM_MINIMIZEEND")
tooltip Окно блокнота развернута
if (Message[Event] = "EVENT_SYSTEM_MOVESIZESTART")
tooltip Окно блокнота перемещается или изменяется размер
if (Message[Event] = "EVENT_SYSTEM_MOVESIZEEND")
tooltip Окно блокнота больше не перемещается
}
}
return