; Beispielskript für die Verwendung der COM-Ereignisfunktionen.
; Benötigt mindestens AutoIt Beta-Version 3.1.1.104!
;
; Siehe auch: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
; Wir verwenden ein sehr einfaches GUI, um die Ergebnisse unserer Ereignisse anzuzeigen.
#include "GUIConstantsEx.au3"
$GUIMain=GUICreate ( "Ereignistest", 600,500 )
$GUIEdit=GUICtrlCreateEdit ( "Test Log:" & @CRLF, 10, 20, 580, 400)
$GUIProg=GUICtrlCreateProgress ( 10, 5, 580, 10)
$GUIExit=GUICtrlCreateButton ( " Schließen ", 250, 450, 80, 30)
GUISetState () ;Zeige GUI
; Internet Explorer als Testsubjekt vorbereiten
$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!
$IEWnd=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.
$EventObject=ObjEvent($oIE,"IEEvent_","DWebBrowserEvents")
if @error then
Msgbox(0,"AutoIt COM Test", _
"ObjEvent: Kann das 'DWebBrowserEvents'-Interface nicht verwenden. Fehlercode: " & hex(@error,8))
exit
endif
; Jetzt wird eine Beispielseite geladen.
$URL = "http://www.AutoItScript.com/"
$oIE.Navigate( $URL )
sleep(1000) ; Etwas warten, um die Webseite zu laden.
GUISwitch ( $GUIMain ) ; Zurück zu unserer GUI, falls uns der IE den Fokus geklaut hat.
; Warten, bis der Benutzer die GUI schließt.
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE or $msg = $GUIExit Then ExitLoop
Wend
$EventObject.Stop ; Teile dem IE mit, dass wir keine Ereignisse empfangen wollen.
$EventObject=0 ; Zerstöre das Ereignisobjekt
If WinExists($IEWnd) then $oIE.Quit ; IE-Fenster schließen
$oIE=0 ; IE aus dem Speicher entfernen (eigentlich nicht nötig).
GUIDelete () ; Entferne GUI
exit ; Ende unseres Demos.
; Einige InternetExplorer-Ereignisfunktionen
; Siehe auch: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/webbrowser.asp
Func IEEvent_BeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
; Beachte: Die Deklaration weicht von der im MSDN ab.
GUICtrlSetData ( $GUIEdit, "BeforeNavigate: " & $URL & " Flags: " & $Flags & " tgframe: " & $TargetFrameName & " Postdat: " & $PostData & " Hdrs: " & $Headers & " canc: " & $Cancel & @CRLF , "append" )
EndFunc
Func IEEvent_ProgressChange($Progress,$ProgressMax)
If $ProgressMax > 0 Then
GUICtrlSetData($GUIProg, ($Progress * 100) / $ProgressMax )
EndIf
EndFunc
Func IEEvent_StatusTextChange($Text)
GUICtrlSetData ( $GUIEdit, "IE Statustext geändert: " & $Text & @CRLF , "append" )
EndFunc
Func IEEvent_PropertyChange( $szProperty)
GUICtrlSetData ( $GUIEdit, "IE hat den Wert der Eigenschaft geändert: " & $szProperty & @CRLF , "append" )
EndFunc
Func IEEvent_DownloadComplete()
GUICtrlSetData ( $GUIEdit, "IE hat eine Navigation abgeschlossen" & @CRLF , "append" )
EndFunc
Func IEEvent_NavigateComplete($URL)
; Beachte: Die Deklaration weicht von der im MSDN ab.
GUICtrlSetData ( $GUIEdit, "IE hat das Laden der URL abgeschlossen: " & $URL & @CRLF , "append" )
EndFunc
Func IEEvent_($EventName)
; Optionale Ereignisfunktion zum Abfangen nichtdefinierter Ereignisse.
; Der Parameter enthält den Namen des aufgerufenen Ereignisses.
GUICtrlSetData ( $GUIEdit, "Unbekanntes Ereignis: " & $EventName & @CRLF , "append" )
EndFunc