padinski Posted July 30, 2015 Share Posted July 30, 2015 Hi All,I have the following script which works beautifully expandcollapse popup;----------------------------------------------------------------------------- ; Select filepath with message to display in FileOpenDialog. ;----------------------------------------------------------------------------- Local Const $sMessage = "Select your excel file." Local $sFilePath = FileOpenDialog($sMessage, "D:\Users\xxxx\Documents\", "Excel (*.xls;*.xlsx;*.csv)|", $FD_FILEMUSTEXIST) ;----------------------------------------------------------------------------- ; Create application object or connect to an already running Excel instance ;----------------------------------------------------------------------------- Local $oAppl = _Excel_Open() If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF:", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended) ;----------------------------------------------------------------------------- ;open workbook from excel ;----------------------------------------------------------------------------- $oWorkbook = _Excel_BookOpen($oAppl, $sFilepath, Default, Default, True) If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF:", "Error opening '" & $oWorkbook & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended) ;----------------------------------------------------------------------------- ;Read array from excel ;----------------------------------------------------------------------------- Local $aArray1 = _Excel_RangeRead($oWorkbook, Default) If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF:", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended) _ArrayDisplay($aArray1) ;----------------------------------------------------------------------------- ; Turn on progress GUI ;----------------------------------------------------------------------------- ProgressOn("Progress", "address updates", "0%") ;----------------------------------------------------------------------------- ; counts the number of rows in the array ;----------------------------------------------------------------------------- $rows = UBound($aArray1) -1 ;----------------------------------------------------------------------------- ; script start ;----------------------------------------------------------------------------- for $c = 1 to $rows ;----------------------------------------------------------------------------- ; Progress calcualtions ;----------------------------------------------------------------------------- $p=($c-1)/$rows*100 ProgressSet($p,$c-1&" of "&$rows&" addresses processed") ;----------------------------------------------------------------------------- ;Address id search in IE ;----------------------------------------------------------------------------- $oIE = _IEAttach("Address") _IENavigate($oIE, "http://intranet/addaddresssearch") $oForm1 = _IEFormGetCollection($oIE, 0) Local $oQuery = _IEFormElementGetObjByName($oForm1, "AddressID") _IEFormElementSetValue($oQuery, $aArray1[$c][0]) _IEFormSubmit($oForm1) _IELoadWait($oIE) If WinActive ("Message")Then ControlClick("Message", "OK", "[CLASS:Button;INSTANCE:1]");Confirmation message box, click "ok" Continueloop EndIf ;----------------------------------------------------------------------------- ;Update fieldB in IE ;----------------------------------------------------------------------------- $oForm2 = _IEFormGetCollection($oIE, 0) Local $oQuery1 = _IEFormElementGetObjByName($oForm2, "fieldB") _IEFormElementSetValue($oQuery1, $aArray1[$c][1]) ;----------------------------------------------------------------------------- ;Update fieldC in IE ;----------------------------------------------------------------------------- Local $oQuery2 = _IEFormElementGetObjByName($oForm2, "fieldC") _IEFormElementSetValue($oQuery2, $aArray1[$c][2]) ;----------------------------------------------------------------------------- ;Update fieldD in IE ;----------------------------------------------------------------------------- Local $oQuery3 = _IEFormElementGetObjByName($oForm2, "fieldD") _IEFormElementSetValue($oQuery3, $aArray1[$c][3]) ;----------------------------------------------------------------------------- ;Update date in IE ;----------------------------------------------------------------------------- Local $oQuery4 = _IEFormElementGetObjByName($oForm2, "Date") _IEFormElementSetValue($oQuery4, "01-06-2015");Set to the first of the month ;----------------------------------------------------------------------------- ;Submit form & prepare for next address ;----------------------------------------------------------------------------- _IEFormSubmit($oForm2) _IELoadWait($oIE) WinWaitActive("Message") ControlClick("Message", "OK", "[CLASS:Button;INSTANCE:1]");Confirmation message box, click "ok" nextOccasionally the page might hang or be slow to load. Now because this will be running on a computer next to me, I need to be alerted if the my _IEnavigate hasn't worked because the web page is unavailable or if _ieloadwait is taking to long to load so I can check whether it's an issue with the server either being down, slow or it's just IE hanging & requires me to click submit again on a form to try again. If it's just the server being slow I need to know so I can stop the script and perhaps run it again when the server is performing at full potential.I am aware I could probably build in functions to allow for such issues, but I would prefer to handle it this way with some sort of alert.I was wondering how I could add a command that would play a sound if more than 3 minutes has passed between a loop?Or if it's easier, if 3 minutes has passed and a page still hasn't loaded, something like: If _IELoadWait($oIE) > 180000 Then ; IE has waited more than 3 minutes to load webpage SoundPlay(@WindowsDir & "\media\tada.wav", 1) EndIfAny help here would be much appreciated. Link to comment Share on other sites More sharing options...
Jfish Posted July 30, 2015 Share Posted July 30, 2015 _IELoadWait has a built in timeout parameter. I would think you could use that and then check for @error = 6 which would be a timeout exception.If @error=6 then ... EndIf Build your own poker game with AutoIt: pokerlogic.au3 | Learn To Program Using FREE Tools with AutoIt Link to comment Share on other sites More sharing options...
padinski Posted July 30, 2015 Author Share Posted July 30, 2015 (edited) Thanks Jfish I will add that into my script, should be exactly what I'm after.Just realized _IENavigate has that same functionality too so I would use that statement after that too I take it.If I change _IELoadWaitTimeout from the default 5 mins to 2 mins I should then get a sound alert if either _IELoadWait or _IENavigate idles for longer than 2 minutes? Edited July 30, 2015 by padinski Link to comment Share on other sites More sharing options...
guinness Posted July 30, 2015 Share Posted July 30, 2015 If @error Then EndIf ; Is suffice, unless you really really need to know it produced an error of 6 padinski and Jfish 2 UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
Jfish Posted July 30, 2015 Share Posted July 30, 2015 If @error Then EndIf ; Is suffice, unless you really really need to know it produced an error of 6 Good point as usual ;-) Build your own poker game with AutoIt: pokerlogic.au3 | Learn To Program Using FREE Tools with AutoIt Link to comment Share on other sites More sharing options...
padinski Posted July 30, 2015 Author Share Posted July 30, 2015 Thanks for the help both of you. Link to comment Share on other sites More sharing options...
guinness Posted July 30, 2015 Share Posted July 30, 2015 It's just if the function changes the @error codes and you missed the script breaking changes, then it still won't break your code. For when something went well, use...If Not @error Then EndIfBut again, it depends entirely on how important the @error code is to you. Some people like to be descriptive to the end user, others are find with a generic "Whoops, something went wrong" kind of message. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
ViciousXUSMC Posted July 30, 2015 Share Posted July 30, 2015 That is a pretty cool little script, mind posting all of your includes? I may want to see about setting up some automation and use this as a base. Link to comment Share on other sites More sharing options...
padinski Posted July 30, 2015 Author Share Posted July 30, 2015 That is a pretty cool little script, mind posting all of your includes? I may want to see about setting up some automation and use this as a base.Hey mate used the following: #include <FileConstants.au3>#include <MsgBoxConstants.au3>#include <Array.au3>#include <IE.au3>#include <Excel.au3> 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