Hi,
I'm trying to user browser events features, but with half success.
The code below works (source from help) on one of my computers, but on second I'm getting error 80004002.
Does anyone know how to solve it?
I have looked for help on some other pages, but nothing seems to work.
Maybe some libraries are wrongly registered.
I need some ideas.
Thank you
; 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 "GUIConstants.au3"
$GUIMain=GUICreate ( "Event Test", 600,500 )
$GUIEdit=GUICtrlCreateEdit ( "Test Log:" & @CRLF, 10, 20, 580, 400)
$GUIProg=GUICtrlCreateProgress ( 10, 5, 580, 10)
$GUIExit=GUICtrlCreateButton ( " Close ", 250, 450, 80, 30)
GUISetState () ;Show GUI
; We prepare the Internet Explorer as our test subject
$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
$IEWnd=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.
$EventObject=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.
$URL = "http://www.AutoItScript.com/"
$oIE.Navigate( $URL )
sleep(1000) ; Give it some time to load the web page
GUISwitch ( $GUIMain ); Switch back to our GUI in case IE stealed the focus
; Waiting for user to close the GUI.
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE or $msg = $GUIExit Then ExitLoop
Wend
$EventObject.Stop ; Tell IE we don't want to receive events.
$EventObject=0 ; Kill the Event Object
If WinExists($IEWnd) then $oIE.Quit; Close IE Window
$oIE=0 ; Remove IE from memory (not really necessary).
GUIDelete () ; Remove GUI
exit ; End of our Demo.
; A few Internet Explorer Event Functions
; See also: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/webbrowser.asp
Func IEEvent_BeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
; Note: the declaration is different from the one on MSDN.
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 Status text changed to: " & $Text & @CRLF , "append" )
EndFunc
Func IEEvent_PropertyChange( $szProperty)
GUICtrlSetData ( $GUIEdit, "IE Changed the value of the property: " & $szProperty & @CRLF , "append" )
EndFunc
Func IEEvent_DownloadComplete()
GUICtrlSetData ( $GUIEdit, "IE has finished a navigation operation" & @CRLF , "append" )
EndFunc
Func IEEvent_NavigateComplete($URL)
; Note: the declaration is different from the one on MSDN.
GUICtrlSetData ( $GUIEdit, "IE has finished loading URL: " & $URL & @CRLF , "append" )
EndFunc
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 ( $GUIEdit, "Uncatched event: " & $EventName & @CRLF , "append" )
EndFunc