; from http://www.autohotkey.com/forum/viewtopic.php?p=123323#123323 ; I slightly edited this script to properly handle: ; HSHELL_HIGHBIT ; HSHELL_RUDEAPPACTIVATED ; HSHELL_FLASH #Persistent Menu,Tray,Add Menu,Tray,Add, &Show, GuiShow Menu,Tray,Default, &Show Gui, Font, s9, Courier New Gui +ToolWindow +AlwaysOnTop +Resize +LastFound hWnd := WinExist() DllCall( "RegisterShellHookWindow", UInt,hWnd ) MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" ) OnMessage( MsgNum, "ShellMessages" ) Gui, Add, Edit, w512 h512 vMsgs hwndEditC +ReadOnly Gui, Show, x10 y10, Shell Spy MsgNames = ( HSHELL_WINDOWCREATED HSHELL_WINDOWDESTROYED HSHELL_ACTIVATESHELLWINDOW HSHELL_WINDOWACTIVATED HSHELL_GETMINRECT HSHELL_REDRAW HSHELL_TASKMAN HSHELL_LANGUAGE HSHELL_SYSMENU HSHELL_ENDTASK HSHELL_ACCESSIBILITYSTATE HSHELL_APPCOMMAND HSHELL_WINDOWREPLACED HSHELL_WINDOWREPLACING ) AppCommands = ( APPCOMMAND_BROWSER_BACKWARD = 1 APPCOMMAND_BROWSER_FORWARD = 2 APPCOMMAND_BROWSER_REFRESH = 3 APPCOMMAND_BROWSER_STOP = 4 APPCOMMAND_BROWSER_SEARCH = 5 APPCOMMAND_BROWSER_FAVORITES = 6 APPCOMMAND_BROWSER_HOME = 7 APPCOMMAND_VOLUME_MUTE = 8 APPCOMMAND_VOLUME_DOWN = 9 APPCOMMAND_VOLUME_UP = 10 APPCOMMAND_MEDIA_NEXTTRACK = 11 APPCOMMAND_MEDIA_PREVIOUSTRACK = 12 APPCOMMAND_MEDIA_STOP = 13 APPCOMMAND_MEDIA_PLAY_PAUSE = 14 APPCOMMAND_LAUNCH_MAIL = 15 APPCOMMAND_LAUNCH_MEDIA_SELECT = 16 APPCOMMAND_LAUNCH_APP1 = 17 APPCOMMAND_LAUNCH_APP2 = 18 APPCOMMAND_BASS_DOWN = 19 APPCOMMAND_BASS_BOOST = 20 APPCOMMAND_BASS_UP = 21 APPCOMMAND_TREBLE_DOWN = 22 APPCOMMAND_TREBLE_UP = 23 APPCOMMAND_MICROPHONE_VOLUME_MUTE = 24 APPCOMMAND_MICROPHONE_VOLUME_DOWN = 25 APPCOMMAND_MICROPHONE_VOLUME_UP = 26 APPCOMMAND_HELP = 27 APPCOMMAND_FIND = 28 APPCOMMAND_NEW = 29 APPCOMMAND_OPEN = 30 APPCOMMAND_CLOSE = 31 APPCOMMAND_SAVE = 32 APPCOMMAND_PRINT = 33 APPCOMMAND_UNDO = 34 APPCOMMAND_REDO = 35 APPCOMMAND_COPY = 36 APPCOMMAND_CUT = 37 APPCOMMAND_PASTE = 38 APPCOMMAND_REPLY_TO_MAIL = 39 APPCOMMAND_FORWARD_MAIL = 40 APPCOMMAND_SEND_MAIL = 41 APPCOMMAND_SPELL_CHECK = 42 APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE = 43 APPCOMMAND_MIC_ON_OFF_TOGGLE = 44 APPCOMMAND_CORRECTION_LIST = 45 ) Return ShellMessages( wP,lP ) { Global EditC Global mVal := lP GuiControlGet, Msgs Routine := GetMessageName( wP ) IfEqual,Routine,, SetEnv, Routine, UNKNOWN GuiControl,, Msgs, % Msgs "`n`n" Routine " [" wP "]" If IsLabel(Routine) GoSub, %Routine% ControlSend,, ^{End}, ahk_id %EditC% } GetMessageName( FieldN=0 ) { Global MsgNames if (FieldN >= 32768) { Prefix := "HSHELL_HIGHBIT | " FieldN := FieldN - 32768 ; deal with named combinations with HSHELL_HIGHBIT IfEqual,FieldN,4,Return,"HSHELL_RUDEAPPACTIVATED" ; HSHELL_RUDEAPPACTIVATED = HSHELL_WINDOWACTIVATED | HSHELL_HIGHBIT IfEqual,FieldN,16,Return,"HSHELL_FLASH" ; HSHELL_FLASH = HSHELL_REDRAW | HSHELL_HIGHBIT } Loop, Parse, MsgNames, `n IfEqual, A_Index, %FieldN%, Return, Prefix . A_LoopField } GetAppCommand( FieldN=0 ) { Global AppCommands Loop, Parse, AppCommands, `n IfEqual, A_Index, %FieldN%, Return, A_LoopField } UNKNOWN: HSHELL_WINDOWCREATED: HSHELL_WINDOWACTIVATED: HSHELL_WINDOWDESTROYED: HSHELL_REDRAW: HSHELL_FLASH: HSHELL_ENDTASK: HSHELL_WINDOWREPLACING: HSHELL_WINDOWREPLACED: HSHELL_RUDEAPPACTIVATED: WinGetTitle, Title, ahk_id %mVal% WinGetClass, Class, ahk_id %mVal% GuiControlGet, Msgs GuiControl,, Msgs , % Msgs "`n`nhWnd`t: " WinExist("ahk_id" mVal) "`nTitle`t: " Title "`nClass`t: " Class Return HSHELL_GETMINRECT: Return HSHELL_APPCOMMAND: GuiControlGet, Msgs GuiControl,, Msgs, % Msgs " // " GetAppCommand( mVal >> 16 ) Return GuiClose: Gui, Show, Hide Return GuiShow: Gui, Show, Return