Jump to content

This site uses cookies. By continuing to browse the site you are agreeing to our use of cookies. Find out more here. X
X


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,574 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.

PredictText: Predict Text of an Edit Control Like Scite. | Remote Gmail: Execute your Scripts through Gmail. | StringRegExp: Share and learn RegExp. |

Run As System: A command line wrapper around PSEXEC.exe to execute your apps scripts as System (LSA). | Database: An easier approach for _SQ_LITE beginners. |

MathsEx: A UDF for Fractions and LCM, GCF/HCF. | FloatingText: An UDF for make your text floating. | Clipboard Extendor: A clipboard monitoring tool. |

Custom ScrollBar: Scroll Bar made with GDI+, user can use bitmaps instead. RestrictEdit_SRE: Restrict text in an Edit Control through a Regular Expression. |





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users