Clipper34 Posted June 23, 2008 Share Posted June 23, 2008 Hey guys, i've been having some trouble with Obejcts. My question is in this code here: #include <GUIConstants.au3> $oIE = ObjCreate("Shell.Explorer.2") GUICreate ( "Embedded Web control Test", 640, 580,(@DesktopWidth-640)/2, (@DesktopHeight-580)/2, BitOr($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN)) $GUIActiveX = GUICtrlCreateObj ( $oIE, 10, 40 , 600 , 360 ) $GUI_Button_Back = GuiCtrlCreateButton ("Back", 10, 420, 100, 30) $GUI_Button_Forward = GuiCtrlCreateButton ("Forward", 120, 420, 100, 30) $GUI_Button_Home = GuiCtrlCreateButton ("Home", 230, 420, 100, 30) $GUI_Button_Stop = GuiCtrlCreateButton ("Stop", 330, 420, 100, 30) GUISetState () $oIE.navigate("http://www.google.com") While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $GUI_Button_Home $oIE.navigate("http://www.google.com.com") Case $msg = $GUI_Button_Back $oIE.GoBack Case $msg = $GUI_Button_Forward $oIE.GoForward Case $msg = $GUI_Button_Stop $oIE.Quit EndSelect Wend GUIDelete () Exit how would you do error handling. Say if you press forwards in the GUI, and an Object event error occurs, i have tryed things like this: $Error = ObjEvent("AutoIt.Error", "Error") Func Error() If $Error = @error Then MsgBox(0, "", "An error has occured!") EndIf EndFunc SetError($Error) and still haven't found a way to prevent object errors. Any ideas or suggestions? Thanks. Link to comment Share on other sites More sharing options...
smashly Posted June 23, 2008 Share Posted June 23, 2008 (edited) Hi, just a direct copy and paste from autoit help file "Function Reference -> Obj/COM Reference -> ObjEvent" section into your example.expandcollapse popup#include <GUIConstants.au3> $oIE = ObjCreate("Shell.Explorer.2") Global $g_eventerror = 0 $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") GUICreate ( "Embedded Web control Test", 640, 580,(@DesktopWidth-640)/2, (@DesktopHeight-580)/2, BitOr($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN)) $GUIActiveX = GUICtrlCreateObj ( $oIE, 10, 40 , 600 , 360 ) $GUI_Button_Back = GuiCtrlCreateButton ("Back", 10, 420, 100, 30) $GUI_Button_Forward = GuiCtrlCreateButton ("Forward", 120, 420, 100, 30) $GUI_Button_Home = GuiCtrlCreateButton ("Home", 230, 420, 100, 30) $GUI_Button_Stop = GuiCtrlCreateButton ("Stop", 330, 420, 100, 30) GUISetState () $oIE.navigate("http://www.google.com") While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $GUI_Button_Home $oIE.navigate("http://www.google.com.com") Case $msg = $GUI_Button_Back $oIE.GoBack Case $msg = $GUI_Button_Forward $oIE.GoForward Case $msg = $GUI_Button_Stop $oIE.Quit EndSelect If $g_eventerror <> 0 Then $g_eventerror = 0 Wend GUIDelete () Exit Func MyErrFunc() Msgbox(0,"AutoItCOM Test","We intercepted a COM Error !" & @CRLF & @CRLF & _ "err.description is: " & @TAB & $oMyError.description & @CRLF & _ "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ "err.number is: " & @TAB & hex($oMyError.number,8) & @CRLF & _ "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ "err.source is: " & @TAB & $oMyError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oMyError.helpcontext _ ) Local $err = $oMyError.number If $err = 0 Then $err = -1 $g_eventerror = $err ; to check for after this function returns Endfunc Read through the whole of the Obj/COM Reference and you'll soon enough get the gist of it. Also have a look in AutoIt\Include folder at IE.au3 and at Word.au3, both have extensive com error handling and with a bit of study you you can soon enough see how the error handling is implemented for a better understanding. Cheers Edited June 23, 2008 by smashly Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now