Hey Leute, ich bin neu hier und habe mal eine Frage an euch:
EDIT: hab das ganze mal verkürzt. Vielleicht schreckt das nicht so ab
1. Ich habe eine GUI.
2. Ich will einen VLC Stream abgreifen. Wenn der sich ändert soll der neue Stream angezeigt werden. Also dachte ich, ich brauche eine Schleife, in der sich alles abspielt, nachdem ich den Button "gui_stream" drücke.
Problem: Wenn ich eine Schleife setze, funktioniert das Umschalten. Allerdings kann ich das Programm über das X nicht mehr schließen.
FRAGE: Was muss ich tun, damit das Programm immer auf den SCHLIEßEN Button reagiert.
Spoiler anzeigen
;Nur mal ganz schematisch:
; Mit Koda erstellte GUI
Opt("GUIResizeMode", $GUI_DOCKAUTO)
$gui_main = GUICreate("GMStream", 195, 104, 339, 242)
$gui_einstellungen = GUICtrlCreateMenu("Einstellungen")
$gui_stream = GUICtrlCreateButton("Stream starten", 9, 8, 177, 65)
GUISetState(@SW_SHOW)
; Programm gestartet
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ProcessClose("vlc.exe")
Exit
; Hier beginnt glaube ich das Problem
Case $gui_stream
ShellExecute($VLC, $Playlist) ; Stream wird gestartet
While 2
if $GUI_EVENT_CLOSE Then ; DAS HATTE ICH EINGEFÜGT, ALS ICH GEMERKT HABE, DAS ICH NACH STREAMSTART NICHTS MEHR STEUERN KANN
ExitLoop
ProcessClose("vlc.exe")
Exit
Else
; jetzt kommen Befehle prüfen der Stream ID
; wenn sich die ändert soll der vlc Player erneut gestartet werden...
........
WEnd
EndSwitch
WEnd
Ich hab die folgende Tips bekommen:
1. AdlibRegister ausprobieren. Da habe ich aber nicht gecheckt, wie ich das für mein Script einsetzen soll..
2. Von MessageLoop in den OnEventMode umzusteigen (Opt("GUIOnEventMode", 1)).
Habe ich nach dem Beispiel in der GUI-Referenz gemacht und alle Buttons von cases zu Funktionen gemacht und aus der Schleife rausgeholt. Aber ich mache das wohl falsch, weil ich den Stream jetzt nicht mehr starten kann (bei einem Versuch gestern meinte ich noch, ich hätte das geschafft).
Grüße