nikink Posted May 29, 2006 Posted May 29, 2006 (edited) Hi folks, I've created a progressbar function and I want to show users how long the script has been running. I currently have it showing the actual progress bar (of course), The time the script started, The current time, and the elapsed time and the current action. Problem is: The current time and elapsed time get calculated when the function is called, and I'd prefer to have them update in realtime. Is that possible? Here's the gist of my script: Func InstallThis($app, $params) RunWait(@comspec & "/c" & @scriptdir & "\" & $app & " " & $params) _ShowProgress("Now installing " & $app) EndFunc Func _ShowProgress($msg) Local $RunTimeSeconds = 0 Local $RunTimeMinutes = 0 Local $RunTimeHours = 0 $CompletedFunctionCalls = $CompletedFunctionCalls + 1 $i = Int(($CompletedFunctionCalls / $TotalFunctionCalls) * 100) $RunTimeSeconds = _DateDiff("s", $StartTime, _NowCalc()) If ($RunTimeSeconds > 59) Then While $RunTimeSeconds > 59 $RunTimeSeconds = $RunTimeSeconds - 60 $RunTimeMinutes = $RunTimeMinutes + 1 If $RunTimeMinutes > 59 Then $RunTimeMinutes = $RunTimeMinutes - 60 $RunTimeHours = $RunTimeHours + 1 EndIf WEnd EndIf ProgressSet( $i, "Time is now " & _NowTime() & ". Elapsed time: " & $RunTimeHours & "h:" & $RunTimeMinutes & "m:" & $RunTimeSeconds & "s. " & @LF _ & $i & " percent complete. Please be patient..." & @LF _ & $msg) EndFunc ;==>_ShowProgress Make sense? Edited May 29, 2006 by nikink
Outshynd Posted May 30, 2006 Posted May 30, 2006 The only way I can think of to do it is to use Run() instead of RunWait() and then loop until the install is finished, updating every 500ms or so. Something like: $pid = Run("whatever.exe") While ProcessExists($pid) _ShowProgress("Now installing " & $app) Sleep(500) WEnd MsgBox(64, "Done!", "Installation of " & $app & " is finished!")
Daniel W. Posted May 30, 2006 Posted May 30, 2006 Local $time = 0 RunWait(....x.....x..x.x..x..xx...) ; ^^ While ProcessExists(....x...x) $time = $time + 1 Wend MsgBox(0,"", Time running was " & $time/1000 ) Maybe this works --------------------------------------------------------------------------------------------------------------------------------Scripts : _Encrypt UDF_UniquePCCode UDF MS like calculatorInstall programm *UPDATED* --------------------------------------------------------------------------------------------------------------------------------[quote name='Helge' post='213117' date='Jul 26 2006, 10:22 AM']Have you ever tried surfing the internet with a milk-carton ?This is similar to what you're trying to do.[/quote]
CodeMaster Rapture Posted May 30, 2006 Posted May 30, 2006 Look into TimerInit() and TimerDiff() in the help files.
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