Autoit MsgBox schließt nicht automatisch...

01/05/2018 08:08 rororobert#1
Hallo,

ich habe die bei Autoit beschriebene Funktion [Only registered and activated users can see links. Click Here To Register...] :

Code:
MsgBox($MB_SYSTEMMODAL, "Title", "This message box will timeout after 10 seconds or select the OK button.", 10)
mit einem schönem Countdown versehen um auch zu sehen wie der Contdown herunterläuft.
Code:
MsgBox(262144 + 64, "Countdown", $sleep_random, $sleep_random)
Das ungewöhnliche ist jetzt das Teilweise der Countdown ins "negative" läuft und so die Msgbox nicht mehr geschlossen wird.

Gibt es die Möglichkeit dieses Phänomen ab zu fangen?

PS: $sleep_random ist immer Positiv und immer größer 1
01/05/2018 19:16 rachefaust#2
was hast du denn als random sleep ? ich habs einfach mal mit $sleep_random = Random(1, 5) getestet funktioniert soweit so kommen auch keine negativen zahlen das einzige is halt das das eine elendig lange komma zahl is und auch nich runtergezählt wird wenn du sowas wie ein countdown machen willst mach eine gui und lass dort die sekunden runterzählen als label und meinetwegen mit nem sicherheits button womit du die schließen kannst ^^
01/06/2018 00:08 xShizoidx#3
Quote:
Originally Posted by rororobert View Post
Hallo,

ich habe die bei Autoit beschriebene Funktion [Only registered and activated users can see links. Click Here To Register...] :

Code:
MsgBox($MB_SYSTEMMODAL, "Title", "This message box will timeout after 10 seconds or select the OK button.", 10)
mit einem schönem Countdown versehen um auch zu sehen wie der Contdown herunterläuft.
Code:
MsgBox(262144 + 64, "Countdown", $sleep_random, $sleep_random)
Das ungewöhnliche ist jetzt das Teilweise der Countdown ins "negative" läuft und so die Msgbox nicht mehr geschlossen wird.

Gibt es die Möglichkeit dieses Phänomen ab zu fangen?

PS: $sleep_random ist immer Positiv und immer größer 1
Warum sollte sich die Messagebox automatisch aktualisieren bzw. den Countdown anzeigen? Es wird die Messagebox ja nur mit der Sekundenanzahl ausgegeben, wann die Box geschlossen werden soll und dies funktioniert auch. Wenn du einen Countdown direkt anzeigen willst, solltest du dir eine eigene Messagebox zusammembasteln und dann stellt dies auch kein Problem dar.

einfaches Beispiel:

Code:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 266, 189, 192, 124)
$randomNumber = Round(Random(2,50),0)
$countdown = GUICtrlCreateLabel($randomNumber, 104, 80, 57, 17)
GUISetState(@SW_SHOW)

While $randomNumber > 0
	$nMsg = GUIGetMsg()
	sleep(1000)
 	$randomNumber = $randomNumber -1
	GUICtrlSetData($countdown,$randomNumber)
WEnd