Jump to content



Photo

SOLVED: Detect (Hook?) New Windows


  • Please log in to reply
4 replies to this topic

#1 adamski

adamski

    Seeker

  • Active Members
  • 49 posts

Posted 20 September 2009 - 06:25 PM

I want to be able to detect when a new application window appears and get information about it (Handle, Titlebar text, etc). I presume this has to be done with hooks or windows messages since it is outside the control of my code.

Help much welcome, Thanks.

Edited by adamski, 20 September 2009 - 09:29 PM.








#2 Yashied

Yashied

    Happy in Moscow

  • MVPs
  • 2,653 posts

Posted 20 September 2009 - 06:55 PM

AutoIt         
#Include <WinAPIEx.au3> Opt('MustDeclareVars', 1) Global $hForm $hForm = GUICreate('') GUIRegisterMsg(_WinAPI_RegisterWindowMessage('SHELLHOOK'), '_ShellHookProc') _WinAPI_RegisterShellHookWindow($hForm) While 1     Sleep(100) WEnd Func _ShellHookProc($hWnd, $iMsg, $wParam, $lParam)     Switch $hWnd         Case $hForm             Switch $wParam                 Case $HSHELL_WINDOWCREATED                     Local $Title = WinGetTitle($lParam)                     If IsString($Title) Then                         ConsoleWrite('Activated: ' & $Title & @CR)                     EndIf             EndSwitch     EndSwitch EndFunc   ;==>_ShellHookProc Func OnAutoItExit()     _WinAPI_DeregisterShellHookWindow($hForm) EndFunc   ;==>OnAutoItExit

WinAPIEx.au3

#3 adamski

adamski

    Seeker

  • Active Members
  • 49 posts

Posted 20 September 2009 - 07:30 PM

Perfect, thanks!

#4 anandchakru

anandchakru

    Seeker

  • Active Members
  • 23 posts

Posted 18 August 2012 - 07:16 PM

This is not working when the autoit is running as "SYSTEM" and not as logged in User. Any idea anybody whats missing here ?
Thanks`A

#5 PhoenixXL

PhoenixXL

    be what you are, its always the BEST..

  • MVPs
  • 1,561 posts

Posted 19 August 2012 - 02:02 PM

This could also help - Basically a Process Monitor
AutoIt         
ConsoleWrite(@CR) ObjEvent("AutoIt.Error", "_DeBug"); capture any com errors just in case, this way the app wont crash. Local $Obj = ObjGet("winmgmts:{impersonationLevel=impersonate}!" & @ComputerName & "rootcimv2") Local $hObj = ObjCreate("WbemScripting.SWbemSink") If IsObj($Obj) And IsObj($hObj) Then ObjEvent($hObj, "SINK_") $Obj.ExecNotificationQueryAsync($hObj, "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'") $Obj.ExecNotificationQueryAsync($hObj, "SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'") Else ConsoleWrite('! Failed to Create the Object') EndIf While 1 Sleep(10) WEnd Func SINK_OnObjectReady($OB) Switch $OB.Path_.Class Case "__InstanceCreationEvent" ConsoleWrite("+ P_ID> " & $OB.TargetInstance.ProcessID & @CR) ConsoleWrite("+ P_Name> " & $OB.TargetInstance.Name & @CR) ConsoleWrite("+ P_Path> " & $OB.TargetInstance.ExecutablePath & @CR&'>---------------'&@CR) Case "__InstanceDeletionEvent" ConsoleWrite("- P_ID> " & $OB.TargetInstance.ProcessID & @CR) ConsoleWrite("- P_Name> " & $OB.TargetInstance.Name & @CR) ConsoleWrite("- P_Path> " & $OB.TargetInstance.ExecutablePath & @CR&'>---------------'&@CR) EndSwitch Return 1 EndFunc ;==>SINK_OnObjectReady Func _Debug($oError) ConsoleWrite( _ "!>##################### AUTOIT OBJECT ERROR ######################################" & @CRLF & _ "->err.number is : " & @TAB & $oError.number & @CRLF & _ "err.scriptline is : " & @TAB & $oError.scriptline & @CRLF & _ ">err.retcode is : " & @TAB & $oError.retcode & @CRLF & _ "!>################################################################################" & @CRLF _ ) Return 0 EndFunc ;==>_Debug

Edited by PhoenixXL, 19 August 2012 - 02:04 PM.

[color=rgb(255,0,0);]PredictText[/color][color=rgb(255,0,0);]:[/color] Predict Text of an Edit Control Like Scite. [color=rgb(204,153,0);]|[/color] [color=rgb(0,128,0);]Remote Gmail[/color][color=rgb(0,128,0);]: [/color]Execute your Scripts through Gmail. [color=rgb(255,165,0);] [/color][color=rgb(204,153,0);]|[/color] [color=rgb(255,140,0);]StringRegExp[/color][color=rgb(218,165,32);]:[/color][color=rgb(218,165,32);] [/color]Share and learn RegExp. [color=rgb(204,153,0);]| [/color]

[color=rgb(238,130,238);]Run As System[/color][color=rgb(238,130,238);]:[/color] A command line wrapper around PSEXEC.exe to execute your apps scripts as System (LSA). [color=rgb(204,153,0);]| [/color][color=rgb(255,0,0);]Database[/color]: An easier approach for _SQ_LITE beginners. [color=rgb(204,153,0);]| [/color]

[color=rgb(0,100,0);]MathsEx[/color][color=rgb(0,100,0);]:[/color] A UDF for Fractions and LCM, GCF/HCF. [color=rgb(204,153,0);]| [/color][color=rgb(238,130,238);]FloatingText[/color][color=rgb(238,130,238);]:[/color] An UDF for make your text floating. [color=rgb(204,153,0);]| [/color][color=rgb(255,140,0);]Clipboard Extendor[/color][color=rgb(255,140,0);]:[/color] A clipboard monitoring tool. [color=rgb(204,153,0);]|[/color]

[color=rgb(255,0,0);]Custom ScrollBar[/color][color=rgb(255,0,0);]:[/color][color=rgb(255,0,0);] [/color]Scroll Bar made with GDI+, user can use bitmaps instead. [color=rgb(204,153,0);]| [/color][color=#006400;]RestrictEdit_SRE:[/color][color=#006400;] [/color]Restrict text in an Edit Control through a Regular Expression. [color=rgb(204,153,0);]|[/color]





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users