Hi,
ich hab folgendes AutoIT Problemchen und komm einfach nicht weiter.
Zur Veranschauung des Problems hab ich mein eigentliches Programm mal auf einen Minimalcode reduziert.
Das Programm macht so natürlich grad keinen großen Sinn, aber ich kann euch zeigen, wo's Hakt.
Es geht darum: Ich hab ein Haupt-GUI von dem aus ich eine FOR-Schleife starte.
Nun soll pro abgearbeiteten STEP der For-Schleife die Unter-GUI gestartet und aus der For-Schleife der Wert übergeben werden.
Die For-Schleife soll nun so lange pausieren, bis das Fenster der Unter-GUI geschlossen wird.
Dann soll Sie um eins hoch springen und das Ganze wieder von Vorne anfangen, sprich Unterfenster auf, Wert übergeben, warten bis Unterfenster geschlossen wird.
Folgendes hab ich probiert, funktioniert aber leider nicht:
[autoit]
#include <include/GuiComboBox.au3>
#include <include/GUIConstantsEx.au3>
Opt('MustDeclareVars', 0)
[/autoit][autoit][/autoit][autoit]; Variablen
global $stopper
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Hauptfenster
$gui_main = GUICreate("Hauptfenster", 100, 50, -1, -1)
$button_start = GUICtrlCreateButton("Schleife starten", 5, 5, 80, 33, 0)
; Fenster einblenden
GUISetState(@SW_SHOW, $gui_main)
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Unterfenster
$gui_sub = GUICreate("Unterfenster", 500, 314, -1, -1)
$combo_fsresults = GUICtrlCreateCombo("", 8, 8, 500, 266, $CBS_SIMPLE)
GUISetState(@SW_HIDE, $gui_sub)
While 1; PROGRAMMSCHLEIFE
$msg = GUIGetMsg(1)
Switch $msg[1]
Case $gui_main; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Event Handling HAUPTFENSTER
Switch $msg[0] ; Event
Case $GUI_EVENT_CLOSE
Exit
Case $button_start
$stopper=false
For $i = 1 to 5 Step +1
If NOT $stopper Then
; Aktuellen Wert von $i in Combobox schreiben
_GUICtrlComboBox_BeginUpdate($combo_fsresults)
_GUICtrlComboBox_AddString($combo_fsresults, $i)
_GUICtrlComboBox_EndUpdate($combo_fsresults)
;Hauptfenster ausblenden
GUISetState(@SW_HIDE, $gui_main)
;Unterfenster einblenden
GUISetState(@SW_SHOW, $gui_sub)
;Stopper auf True setzen, dass die For-Schleife erstmal "pausiert" wird
;Und zwar solange, bis das Unterfenster wieder geschlossen wird (Denn mit dieser Aktion wird die Variable $stopper wieder auf FALSE gesetzt...)
$stopper = True
EndIf
Next
EndSwitch
Case $gui_sub; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Event Handling Unterfenster
Switch $msg[0] ; Event
Case $GUI_EVENT_CLOSE
;ComboBox löschen
_GUICtrlComboBox_ResetContent($combo_fsresults)
; Stopper wieder auf FALSE setzen, so dass die For-Schleife wdes Hauptfensters wieder weiter abgearbeitet wird...
$stopper=False
; Unterfenster ausblenden
GUISetState(@SW_HIDE, $gui_sub)
;Hauptfenster einblenden
GUISetState(@SW_SHOW, $gui_main)
EndSwitch
EndSwitch
WEnd; PROGRAMMSCHLEIFE
Wenn ich zum checken der Variable STOPPER statt IF/ENDIF WHILE einsetze funktionierts auch nicht...
Bin für jeden Tipp dankbar.
Grüßen
Daniel