I have started using
AutoIT v3 to write automated installers and other scripted windows programming lately. When I send out an update to a client computer, sometimes I want to be able to notify the user and let them delay the update for a set amount of time. Using the TimerInit() & TimerDiff() functions I am able to pop up a message and begin a timer.
#include <GUIConstants.au3>
;
;milliseconds for timer, start the timer and label text
;
$ms = 3601000
$timer = TimerInit()
$labeltext = "The IT department needs to install the latest approved updates..."
;
;gui window with text, Install Now button and timer window
;
GUICreate("Software Update", 350, 330, -1, -1, $WS_DLGFRAME, $WS_EX_TOPMOST)
$Install = GUICtrlCreateButton ("Install Now", 100, 250, 150, 50)
$Label = GUICtrlCreateLabel($labeltext, 10, 10, 330, 200)
$Input = GUICtrlCreateInput("", 140, 225, 75, 20, BitOr($SS_CENTER, $ES_READONLY))
GUISetState (@SW_SHOW)
;
;wait for timer to expire or for Install Now button to be clicked
;each time around the loop, it will update the timer displayed on the screen
;
While (TimerDiff($timer) < $ms) and (GUIGetMsg() <> $Install)
;
$seconds = TimerDiff($timer)/1000
$diff = $seconds - ($ms/1000)
;
$minutes = Int($diff / 60)
$secondsRem = $diff - ($minutes * 60)
;
$minutes = $minutes * -1
$secondsRem = $secondsRem * -1
$time = StringFormat("%02d", $minutes) & ":" & StringFormat("%02d", $secondsRem)
;
GUICtrlSetData($Input, $time)
;
WEnd
;
Run("yourcommand.exe")