iverson_est Posted April 14, 2006 Share Posted April 14, 2006 #include <IE.au3> $Account = IniRead("Settings.ini", "Settings", "Kasutaja", "NotFound") $Password = IniRead("Settings.ini", "Settings", "Parool", "NotFound") HotKeySet("{ESC}", "Terminate") $o_IE = _IECreate () _IENavigate($o_IE, "http://www.rate.ee/show.php") Sleep(2000) Run("Errorcheck.exe") Sleep(3000) Send($Account) Send("{TAB}") Send($Password) Send("{TAB}") Send("{Enter}") Sleep(4000) While 1 $oForm = _IEFormGetObjByIndex($o_IE, 0) $oViis = _IEFormElementGetObjByName($oForm, "rating", 5) $oViis.click Sleep(1000) $oForm1 = _IEFormGetObjByIndex($o_IE, 0) $oNeli = _IEFormElementGetObjByName($oForm1, "rating", 4) $oNeli.click Sleep(1000) $oForm2 = _IEFormGetObjByIndex($o_IE, 0) $oKolm = _IEFormElementGetObjByName($oForm2, "rating", 3) $oKolm.click Sleep(1000) WEnd Func Terminate () Exit 0 EndFunc and the errorcheck $file_loc = @ScriptDir & "\rate login 1.au3" HotKeySet("{F1}", "Terminate") Func Terminate() Exit 0 EndFunc While 1 Sleep(5000) If WinExists("AutoIt Error") Then Send("{Enter}") ProcessClose("iexplore.exe") Sleep(2000) Run(@AutoItExe & ' "' & $file_loc & '"', "",@SW_MAXIMIZE) Sleep(3000) Exit ;ProcessClose("errorcheck.exe") EndIf WEnd and it just wont close the errorcheck. It just won't. If i take this Run part away it closes nicely. How could i make it run one prog and then close the errorcheck? Link to comment Share on other sites More sharing options...
Developers Jos Posted April 14, 2006 Developers Share Posted April 14, 2006 #include <IE.au3> $Account = IniRead("Settings.ini", "Settings", "Kasutaja", "NotFound") $Password = IniRead("Settings.ini", "Settings", "Parool", "NotFound") HotKeySet("{ESC}", "Terminate") $o_IE = _IECreate () _IENavigate($o_IE, "http://www.rate.ee/show.php") Sleep(2000) Run("Errorcheck.exe") Sleep(3000) Send($Account) Send("{TAB}") Send($Password) Send("{TAB}") Send("{Enter}") Sleep(4000) While 1 $oForm = _IEFormGetObjByIndex($o_IE, 0) $oViis = _IEFormElementGetObjByName($oForm, "rating", 5) $oViis.click Sleep(1000) $oForm1 = _IEFormGetObjByIndex($o_IE, 0) $oNeli = _IEFormElementGetObjByName($oForm1, "rating", 4) $oNeli.click Sleep(1000) $oForm2 = _IEFormGetObjByIndex($o_IE, 0) $oKolm = _IEFormElementGetObjByName($oForm2, "rating", 3) $oKolm.click Sleep(1000) WEnd Func Terminate () Exit 0 EndFunc and the errorcheck $file_loc = @ScriptDir & "\rate login 1.au3" HotKeySet("{F1}", "Terminate") Func Terminate() Exit 0 EndFunc While 1 Sleep(5000) If WinExists("AutoIt Error") Then Send("{Enter}") ProcessClose("iexplore.exe") Sleep(2000) Run(@AutoItExe & ' "' & $file_loc & '"', "",@SW_MAXIMIZE) Sleep(3000) Exit ;ProcessClose("errorcheck.exe") EndIf WEnd and it just wont close the errorcheck. It just won't. If i take this Run part away it closes nicely. How could i make it run one prog and then close the errorcheck? Why are you trying to do this with a separate program ? It looks to me you are trying to avoid Com errors so why not implement a Com Error handler in your original script to process errors? SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
iverson_est Posted April 15, 2006 Author Share Posted April 15, 2006 How can i put the errorcheck into the 1st script? When i get an error, the script will stop and it won't do the if...endif. Hope you get what i mean Link to comment Share on other sites More sharing options...
Developers Jos Posted April 15, 2006 Developers Share Posted April 15, 2006 How can i put the errorcheck into the 1st script? When i get an error, the script will stop and it won't do the if...endif. Hope you get what i mean Here's an example com error handler ... see helpfile for details. Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc"); Install a custom error handler ; This is my custom error handler Func MyErrFunc() $HexNumber=hex($oMyError.number,8) ConsoleWrite("COM Error ! LineNumber " & $oMyError.scriptline & " errNumber: " & $HexNumber & "Desc: " & $oMyError.description & "Windesc: " & $oMyError.windescription ) SetError(1) ; something to check for when this function returns Endfunc SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
iverson_est Posted April 15, 2006 Author Share Posted April 15, 2006 The helpfile had this example: $oMyError = ObjEvent("AutoIt.Error","MyErrFunc"); Install a custom error handler ; Performing a deliberate failure here (object does not exist) $oIE = ObjCreate("InternetExplorer.Application") $oIE.visible = 1 $oIE.bogus if @error then Msgbox(0,"","the previous line got an error.") Exit ; This is my custom error handler Func MyErrFunc() $HexNumber=hex($oMyError.number,8) Msgbox(0,"","We intercepted a COM Error !" & @CRLF & _ "Number is: " & $HexNumber & @CRLF & _ "Windescription is: " & $oMyError.windescription ) SetError(1); something to check for when this function returns Endfunc well, if i understand right then i must write $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") to my script and the Func MyErrFunc() and the fix under it? Like $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") Func MyErrFunc() Send("{Enter}") ProcessClose("iexplore.exe") Sleep(2000) Run(@AutoItExe & ' "' & $file_loc & '"', "",@SW_MAXIMIZE) Sleep(3000) Tho i don't understand why is it $oMyError, i dont need it as a varable anywhere... Did i get the basic point or i didn't Link to comment Share on other sites More sharing options...
Developers Jos Posted April 15, 2006 Developers Share Posted April 15, 2006 I don't see any Com statement in your script example. What errors are you trying to capture ? SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
iverson_est Posted April 15, 2006 Author Share Posted April 15, 2006 what is a com statement, didn't read it out from the helpfile. My error is a simple autoit error. My script clicks radio buttons in a webpage, so when a new page loads a little longer or gets a timeout, i get an autoit error. Link to comment Share on other sites More sharing options...
iverson_est Posted April 16, 2006 Author Share Posted April 16, 2006 Ok, i think i know what statement i am missing. My question: Can i use if...endif statement in com or only for...in and with...endwith statements Link to comment Share on other sites More sharing options...
iverson_est Posted April 16, 2006 Author Share Posted April 16, 2006 bump Link to comment Share on other sites More sharing options...
Valuater Posted April 16, 2006 Share Posted April 16, 2006 bump one thing you can do is make sure you have the latest functions in your IE.au3 include file Func _IELoadWait($o_object, $i_delay = 0) If IsObj($o_object) Then Sleep($i_delay) If ObjName($o_object) = "IWebBrowser2" Then While _IEGetProperty($o_object, "busy") or _ ((_IEGetProperty($o_object, "readyState") <> "complete") and _ (_IEGetProperty($o_object, "readyState") <> 4)) Sleep(100) WEnd EndIf While ($o_object.document.readyState <> "complete") and _ ($o_object.document.readyState <> 4) Sleep(100) WEnd SetError(0) Return 1 Else SetError(1) Return 0 EndIf EndFunc;==>_IELoadWait and Func _IECreate($f_visible = 1) $o_object = ObjCreate("InternetExplorer.Application") If IsObj($o_object) Then $o_object.visible = $f_visible _IENavigate ($o_object, "about:blank") SetError(0) Return $o_object Else SetError(1) Return 0 EndIf EndFunc;==>_IECreate the loadwait is the most importatnt hope that helps too 8) Link to comment Share on other sites More sharing options...
iverson_est Posted April 16, 2006 Author Share Posted April 16, 2006 i have the newest ie.au3, but imo the error i get is unavoidable, i will get it sooner or later... i get one in every 30mins or so, but i want it to run longer, so i can see that the COM error handler would be the best solution here. Tho i have very little clue how to install one. 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