Personnellement, j'utiliserais un compteur pour faire cela
Code : Tout sélectionner
#include <GUIConstants.au3>
Opt("GuiOnEventMode",1)
$gui = GUICreate("test",200,200)
$pro = GUICtrlCreateProgress(10,10,100,40)
GUISetState()
GUISetOnEvent($GUI_EVENT_CLOSE,"quitter")
$_timer = TimerInit()
While 1
Sleep(1000) ; ***
$timer = Round(TimerDiff($_timer)/1000,0) * 5
GUICtrlSetData($pro,$timer)
WEnd
Func quitter()
Exit
EndFunc
Dans le cas ci-présent, si tu insère diverses actions dans ta boucle ou si tu changes la durée du sleep, le timer servira de base pour
faire augmenter la progressbar plutôt qu'un sleep. Ce qui peux quand même fausser le 20 secondes légèrement si le 20 secondes vient à
son terme et que ton script est occupé ailleurs, mais dans ce cas, tu pourrais utiliser un adlibenable () pour faire avancer le temps correctement.
Code : Tout sélectionner
#include <GUIConstants.au3>
Opt("GuiOnEventMode",1)
$gui = GUICreate("test",200,200)
$pro = GUICtrlCreateProgress(10,10,100,40)
GUISetState()
GUISetOnEvent($GUI_EVENT_CLOSE,"quitter")
$_timer = TimerInit()
AdlibEnable("blu",500)
While 1
Sleep(4000)
ToolTip("Poke !",-1,-1)
Sleep(700)
ToolTip("")
WEnd
Func quitter()
Exit
EndFunc
Func blu()
$timer = Round(TimerDiff($_timer)/1000,0) * 5
GUICtrlSetData($pro,$timer)
If $timer >= 100 Then AdlibDisable()
EndFunc