@@SyntaxHighlighting@@ ; Beispielskript für die Verwendung der COM-Ereignisfunktionen. ; ; Siehe auch: http://msdn.microsoft.com/en-us/library/aa768400.aspx ; Wir verwenden ein sehr einfaches GUI, um die Ergebnisse unserer Ereignisse anzuzeigen. #include #include Global $g_idGUIEdit, $g_idGUIProg Example() Exit ; End of our Demo. Func Example() Local $hGUIMain = GUICreate("Ereignistest", 600, 500) $g_idGUIEdit = GUICtrlCreateEdit("Test Log:" & @CRLF, 10, 20, 580, 400) $g_idGUIProg = GUICtrlCreateProgress(10, 5, 580, 10) Local $idGUIExit = GUICtrlCreateButton(" Schliessen ", 250, 450, 80, 30) GUISetState() ;Zeigt die GUI ; Internet Explorer als Testsubjekt vorbereiten Local $oIE = ObjCreate("InternetExplorer.Application.1") With $oIE .Visible = 1 .Top = (@DesktopHeight - 400) / 2 .Height = 400 ; IE-Fenster ein wenig kleiner als unser GUI machen .Width = 600 .Silent = 1 ; Keine IE-Dialogboxen anzeigen Local $hIEWnd = HWnd(.hWnd) ; Fenster merken, falls der Benutzer es schließen will EndWith ; Wir verwenden ein besonderes IE-Interface (DWebBrowserEvents), weil der IE von anderen Applikationen ; wie z.B. Visual Studio oder Adobe Acrobat Reader modifiziert werden kann. Wenn IE-Plugins installiert sind, ; kann AutoIt unter Umständen das richtige Interface nicht automatisch feststellen. Local $oEventObject = ObjEvent($oIE, "IEEvent_", "DWebBrowserEvents") If @error Then MsgBox($MB_OK, "AutoIt COM Test", _ "ObjEvent: Kann das 'DWebBrowserEvents'-Interface nicht verwenden. Fehlercode: " & Hex(@error, 8)) Exit EndIf ; Jetzt wird eine Beispielseite geladen Local $sURL = "http://www.AutoItScript.com/" $oIE.Navigate($sURL) Sleep(1000) ; Etwas warten, um die Webseite zu laden GUISwitch($hGUIMain) ; Zurück zu unserer GUI, falls uns der IE den Fokus geklaut hat ; Warten, bis der Benutzer die GUI schließt. Local $iMsg While 1 $iMsg = GUIGetMsg() If $iMsg = $GUI_EVENT_CLOSE Or $iMsg = $idGUIExit Then ExitLoop WEnd $oEventObject.Stop ; Teile dem IE mit, dass wir keine Ereignisse empfangen wollen. $oEventObject = 0 ; Zerstöre das Ereignisobjekt If WinExists($hIEWnd) Then $oIE.Quit ; IE-Fenster schließen $oIE = 0 ; IE aus dem Speicher entfernen (eigentlich nicht nötig). GUIDelete() ; Entferne GUI EndFunc ;==>Example ; Einige InternetExplorer-Ereignisfunktionen ; Siehe auch: http://msdn.microsoft.com/en-us/library/aa768400.aspx Func IEEvent_BeforeNavigate($sURL, $iFlags, $sTargetFrameName, $dPostData, $sHeaders, $bCancel) ; Beachte: Die Deklaration weicht von der im MSDN ab. GUICtrlSetData($g_idGUIEdit, "BeforeNavigate: " & $sURL & " Flags: " & $iFlags & " tgframe: " & $sTargetFrameName & " Postdat: " & $dPostData & " Hdrs: " & $sHeaders & " canc: " & $bCancel & @CRLF, "append") EndFunc ;==>IEEvent_BeforeNavigate Func IEEvent_ProgressChange($iProgress, $iProgressMax) If $iProgressMax > 0 Then GUICtrlSetData($g_idGUIProg, ($iProgress * 100) / $iProgressMax) EndIf EndFunc ;==>IEEvent_ProgressChange Func IEEvent_StatusTextChange($sText) GUICtrlSetData($g_idGUIEdit, "Der IE Statustext änderte sich ebenfalls: " & $sText & @CRLF, "append") EndFunc ;==>IEEvent_StatusTextChange Func IEEvent_PropertyChange($szProperty) GUICtrlSetData($g_idGUIEdit, "Der IE änderte den Wert der Eigenschaft: " & $szProperty & @CRLF, "append") EndFunc ;==>IEEvent_PropertyChange Func IEEvent_DownloadComplete() GUICtrlSetData($g_idGUIEdit, "Der IE hat die Navigationsoperation beendet" & @CRLF, "append") EndFunc ;==>IEEvent_DownloadComplete Func IEEvent_NavigateComplete($sURL) ; Beachte: Die Deklaration weicht von der im MSDN ab. GUICtrlSetData($g_idGUIEdit, "IE has finished loading URL: " & $sURL & @CRLF, "append") EndFunc ;==>IEEvent_NavigateComplete Func IEEvent_($sEventName) ; Optionale Ereignisfunktion zum Abfangen nichtdefinierter Ereignisse. ; Der Parameter enthält den Namen des aufgerufenen Ereignisses. GUICtrlSetData($g_idGUIEdit, "Uncatched event: " & $sEventName & @CRLF, "append") EndFunc ;==>IEEvent_ @@End@@