; Example script, showing the usage of COM Event functions.
; Requires at least AutoIt beta version 3.1.1.104 !
;
; See also: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
; We use a very simple GUI to show the results of our Events.
#include "GUIConstantsEx.au3"
Global $hGUIEdit, $hGUIProg
Example()
Exit ; End of our Demo.
Func Example()
Local $hGUIMain = GUICreate("Event Test", 600, 500)
$hGUIEdit = GUICtrlCreateEdit("Test Log:" & @CRLF, 10, 20, 580, 400)
$hGUIProg = GUICtrlCreateProgress(10, 5, 580, 10)
Local $hGUIExit = GUICtrlCreateButton(" Close ", 250, 450, 80, 30)
GUISetState() ;Show GUI
; We prepare the Internet Explorer as our test subject
Local $oIE = ObjCreate("InternetExplorer.Application.1")
With $oIE
.Visible = 1
.Top = (@DesktopHeight - 400) / 2
.Height = 400 ; Make it a bit smaller than our GUI.
.Width = 600
.Silent = 1 ; Don't show IE's dialog boxes
Local $hIEWnd = HWnd(.hWnd) ; Remember the Window, in case user decides to close it
EndWith
; We choose for a specific Internet Explorer interface 'DWebBrowserEvents' because the IE is subject
; to modifications by e.g. Visual Studio and Adobe Acrobat Reader. If you have IE-plugins installed,
; AutoIt might not be able to find the correct interface automatically.
Local $oEventObject = ObjEvent($oIE, "IEEvent_", "DWebBrowserEvents")
If @error Then
MsgBox(0, "AutoIt COM Test", _
"ObjEvent: Can't use event interface 'DWebBrowserEvents'. Error code: " & Hex(@error, 8))
Exit
EndIf
; Now starting to load an example Web page.
Local $sURL = "http://www.AutoItScript.com/"
$oIE.Navigate($sURL)
Sleep(1000) ; Give it some time to load the web page
GUISwitch($hGUIMain) ; Switch back to our GUI in case IE stole the focus
; Waiting for user to close the GUI.
Local $msg
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Or $msg = $hGUIExit Then ExitLoop
WEnd
$oEventObject.Stop ; Tell IE we don't want to receive events.
$oEventObject = 0 ; Kill the Event Object
If WinExists($hIEWnd) Then $oIE.Quit ; Close IE Window
$oIE = 0 ; Remove IE from memory (not really necessary).
GUIDelete() ; Remove GUI
EndFunc ;==>Example
; A few Internet Explorer Event Functions
; See also: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/webbrowser.asp
Func IEEvent_BeforeNavigate($sURL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
; Note: the declaration is different from the one on MSDN.
GUICtrlSetData($hGUIEdit, "BeforeNavigate: " & $sURL & " Flags: " & $Flags & " tgframe: " & $TargetFrameName & " Postdat: " & $PostData & " Hdrs: " & $Headers & " canc: " & $Cancel & @CRLF, "append")
EndFunc ;==>IEEvent_BeforeNavigate
Func IEEvent_ProgressChange($Progress, $ProgressMax)
If $ProgressMax > 0 Then
GUICtrlSetData($hGUIProg, ($Progress * 100) / $ProgressMax)
EndIf
EndFunc ;==>IEEvent_ProgressChange
Func IEEvent_StatusTextChange($sText)
GUICtrlSetData($hGUIEdit, "IE Status text changed to: " & $sText & @CRLF, "append")
EndFunc ;==>IEEvent_StatusTextChange
Func IEEvent_PropertyChange($szProperty)
GUICtrlSetData($hGUIEdit, "IE Changed the value of the property: " & $szProperty & @CRLF, "append")
EndFunc ;==>IEEvent_PropertyChange
Func IEEvent_DownloadComplete()
GUICtrlSetData($hGUIEdit, "IE has finished a navigation operation" & @CRLF, "append")
EndFunc ;==>IEEvent_DownloadComplete
Func IEEvent_NavigateComplete($sURL)
; Note: the declaration is different from the one on MSDN.
GUICtrlSetData($hGUIEdit, "IE has finished loading URL: " & $sURL & @CRLF, "append")
EndFunc ;==>IEEvent_NavigateComplete
Func IEEvent_($EventName)
; This is an optional event function to catch non-defined events.
; The parameter contains the name of the event being called.
GUICtrlSetData($hGUIEdit, "Uncatched event: " & $EventName & @CRLF, "append")
EndFunc ;==>IEEvent_