Hallo Leute, ich habe ein Problem was ich nicht lösen kann.
Ich fange erstmal damit an, zu beschreiben was ich realisieren möchte:
- Es erscheint eine GUI mit Auswahl 2er Punkte, die sich nach 60 Sekunden Automatisch schliessen soll und dabei Automatisch eine Variable auf "1" setzt. Später wird diese Varaible dazu genutzt um zu entscheiden ob ein Program im Hintergrund offen bleibt oder geschlossen wird. Die 2 Buttons heissen einfach "Ja Programm schliessen" und "Nein, Programm offen lassen". Bei egal welcher Button Auswahl sollte sich die GUI sofort schliessen (und nicht die 60 Sekunden abwarten) und das Script normal weiter laufen.
Ich habe es mit einer For und einer While Schleife versucht, einfach $i runter zählen zu lassen (mit Sleep(1000) im script) und bei beiden bleibt die GUI insgesamt offen, egal ob ich exitloop verwende oder nicht.
Nutze ich aber eine Schleife mit "while [Bedingung größer 0 -> Also "Endlos")" funktioniert es und die GUI geht bei drücken eines Buttons sofort zu und das Script läuft weiter - hier funktioniert also der Schleifenausbruch.
Mein Code rein für den 60 Sekunden Countdown:
[autoit]
local $i = 0
while $i < $GUIclosetime ; Variable auf 60 Sek gesetzt am Anfang des Scripts
$guimsg = GUIGetMsg()
Select
case $guimsg = -3
Global $ProgrammCanBeClosed = 1
exitloop
case $guimsg = $GuiButton1
Global $ProgrammCanBeClosed = 1
exitloop
case $guimsg = $GuiButton2
Global $ProgrammCanBeClosed = 0
exitloop
EndSelect
Sleep(1000)
$i = $i + 1
Global $ProgrammCanBeClosed =1
WEnd
GUISetState(@SW_HIDE, $MyGUI) ; "MyGUI ist der Handle meiner GUI"
So, was nun passiert ist das folgende:
Egal ob ich auf einen der Buttons oder das "x" der GUI klicke, die GUI bleibt insgesamt ihre 60Sekunden offen bevor sie selbst schliesst. Die Übergabe der Variablen funktioniert dagegen Richtig und wie gewünscht, d.h. nach 60 Sekunden Timeout ist " $ProgrammCanBeClosed" auf "1" und wenn ich auf "Button2" klicke ist sie auf "0" gesetzt.
Jetzt habe ich natürlich auch versucht den code
[autoit]GUISetState(@SW_HIDE, $MyGUI)
[/autoit]
in die einzelnen cases des "Select" zu packen, aber auch da bleibt die GUI offen.
Und wie weiter oben genannt, nutze ich hingegen eine while Schleife beginnend á la:
[autoit]while 1
[/autoit]
Funktioniert der Sofortige Schleifenausbruch und das Variablensetzen Problemlos, allerdings habe ich dann ja keinen Countdown von 60 Sekunden, der aber wirklich nötig ist - sonst brauche ich das ganze Script nicht...
Wer hat ideen?
1000 Dank schonmals
Lg Christian