2 Guis , aber nur eine wird "erkannt"

  • Hey,
    habe grad tue mich grad etwas schwer...
    Wollte mein Programm Radio Streamer etwas erweitern , habe aber dann gemerkt das dass Programm nur die Buttons der hauptgui erkennt , warum?
    Was kann ich dagegen tuen?
    Habe schonmal was von dem "Advanced - GUIGetMsg()-Modus" gehört. Aber habe da leider nichts passendes gefunden!
    Wäre euch für Hilfe sehr dankbar!

  • Ups , wollte ich eigentl,ich posten..Hab ich aber vergessen -.-.
    hier...

    [autoit]


    #include <GUIConstants.au3>
    #include <IE.au3>
    #NoTrayIcon
    Opt("TrayMenuMode", 1)
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Radio Streamer", 422, 112, 195, 125)
    $zeigen = TrayCreateItem("Zeigen")
    $hidden = TrayCreateItem("Verstecken")
    GUISetBkColor(0xC0C0C0)
    $List1 = GUICtrlCreateList("", 0, 14, 125, 97)
    _IEErrorHandlerRegister()
    $oIE = _IECreateEmbedded()
    GUICtrlSetData(-1, "HardBase.fm|HouseTime.fm|TechnoBase.fm|TranceBase.fm")
    $Label1 = GUICtrlCreateLabel("Wähle ein Radio aus.", 10, 0, 106, 13)
    $Group1 = GUICtrlCreateObj($oIE, 126, 0, 297, 65)
    $Home = GUICtrlCreateButton("Home", 130, 84, 47, 21, 0)
    $Spielen = GUICtrlCreateButton("Spielen", 184, 84, 47, 21, 0)
    $Stop = GUICtrlCreateButton("Save", 238, 84, 47, 21, 0)
    $Save = GUICtrlCreateButton("Credits", 292, 84, 47, 21, 0)
    $add = GUICtrlCreateButton("Add", 346, 84, 47, 21, 0)
    _IENavigate($oIE, "http://www.autoit.de")
    GUISetState(@SW_SHOW)
    $Form1 = GUICreate("Hinzufügen", 171, 64, 193, 125)
    $Label1 = GUICtrlCreateLabel("Name:", 2, 4, 35, 17)
    GUICtrlCreateInput("", 36, 2, 133, 21)
    $Label2 = GUICtrlCreateLabel("Link:", 8, 24, 27, 17)
    GUICtrlCreateInput("", 36, 22, 133, 21)
    $Hinzufuegen = GUICtrlCreateButton("Add", 2, 44, 45, 19, 0)
    $Button1 = GUICtrlCreateButton("Beispiel", 62, 44, 45, 19, 0)
    $Button2 = GUICtrlCreateButton("Fertig", 124, 44, 45, 19, 0)
    GUISetState(@SW_HIDE)
    #endregion ### START Koda GUI section ### Form=
    TraySetState()

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $Home
    _IENavigate($oIE, "http://www.autoit.de")
    Case $Spielen
    $seite = GUICtrlRead($List1)
    If $seite = "TechnoBase.fm" Then
    _IENavigate($oIE, "http://www.technobase.fm/wmplayer.php?Stream=http://DSL.TechnoBase.eu/listen-dsl.asx")
    ElseIf $seite = "HardBase.fm" Then
    _IENavigate($oIE, "http://www.hardbase.fm/wmplayer.php?Stream=http://mp3.hardbase.fm/listen.asx")
    ElseIf $seite = "HouseTime.fm" Then
    _IENavigate($oIE, "http://www.surfmusik.de/radio/housetime-fm,10832.html")
    ElseIf $seite = "TranceBase.fm" Then
    _IENavigate($oIE, "http://www.trancebase.fm/wmplayer.php?Stream=http://mp3.TranceBase.fm/listen.asx")
    EndIf
    Case $Stop
    GUISetState(@SW_HIDE)
    $msgbox = MsgBox(52, "Achtung", "Diese Datei kann man meines Wissens nur mit dem VLC Media Player öffnen!" & @CRLF & "Möchtest du fortfahren?")
    If $msgbox = 6 Then
    _IEAction($oIE, "saveas")
    GUISetState(@SW_SHOW)
    Else
    GUISetState(@SW_SHOW)
    EndIf
    Case $Save
    GUISetState(@SW_HIDE)
    MsgBox(48, "Credits", "Credits gehen an r1fLeX von Autoit.de")
    GUISetState(@SW_SHOW)
    EndSwitch
    Switch $nMsg[0]
    Case $add
    WinSetState("Hinzufügen", "", @SW_SHOW)
    Case $Button2
    WinSetState("Hinzufügen", "", @SW_HIDE)
    EndSwitch
    $msg = TrayGetMsg()
    Switch $msg
    Case $zeigen
    WinSetState("Radio Streamer", "", @SW_SHOW)
    Case $hidden
    WinSetState("Radio Streamer", "", @SW_HIDE)
    EndSwitch
    WEnd
    GUIDelete()
    Exit

    [/autoit]
  • Möchte aber das man nicht nur auf einer GUI agieren kann :).
    Ich weiß das dass geht , nur nicht mehr wie :P.

  • Versuch mal statt WinSetstate GUISetstate :)
    Außerdem: Variablen doppelt verwendet... Label1 / Form1 ...

  • Mach doch einfach mal folgendes:

    [autoit]

    If WinActive($GUI1) Then
    GUISwitch($GUI1)
    ElseIf WinActive($GUI2) Then
    GUISwitch($GUI2)
    EndIf

    [/autoit]

    und dann schreibst du alles Befehle von GUIGetMsg() in eine While...dann sollte es gehen.


    ...und wie Progandy ja schon gesagt hast must du die Variablen verdoppeln. Das heißt du darfst z.b. nicht 2 mal $Label1 haben, sonst wird beim zweiten deklarieren die erste Variable überschrieben und du kommst nicht mehr an das erste Label ran.

  • habs nun anders gelöst..
    Jedoch stecke ich feste! ( ja , ich probiere seit knapp 45 Minuten aber komme nicht weiter , pee )

    Code

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <IE.au3>
    #NoTrayIcon
    Opt("TrayMenuMode", 1)
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Radio Streamer", 422, 112, 195, 125)
    $zeigen = TrayCreateItem("Zeigen")
    $hidden = TrayCreateItem("Verstecken")
    GUISetBkColor(0xC0C0C0)
    $List1 = GUICtrlCreateList("", 0, 14, 125, 97)
    _IEErrorHandlerRegister()
    $oIE = _IECreateEmbedded()
    GUICtrlSetData(-1, "HardBase.fm|HouseTime.fm|TechnoBase.fm|TranceBase.fm")
    $Label1 = GUICtrlCreateLabel("Wähle ein Radio aus.", 10, 0, 106, 13)
    $Group1 = GUICtrlCreateObj($oIE, 126, 0, 297, 65)
    $Home = GUICtrlCreateButton("Home", 130, 84, 47, 21, 0)
    $Spielen = GUICtrlCreateButton("Spielen", 184, 84, 47, 21, 0)
    $Stop = GUICtrlCreateButton("Save", 238, 84, 47, 21, 0)
    $Save = GUICtrlCreateButton("Credits", 292, 84, 47, 21, 0)
    $add = GUICtrlCreateButton("Add", 346, 84, 47, 21, 0)
    _IENavigate($oIE, "http://www.autoit.de")
    GUISetState(@SW_SHOW)
    $Form2 = GUICreate("Hinzufügen", 171, 64, 193, 125)
    $Label2 = GUICtrlCreateLabel("Name:", 2, 4, 35, 17)
    $name = GUICtrlCreateInput("", 36, 2, 133, 21)
    $Label3 = GUICtrlCreateLabel("Link:", 8, 24, 27, 17)
    $link = GUICtrlCreateInput("", 36, 22, 133, 21)
    $Hinzufuegen = GUICtrlCreateButton("Add", 2, 44, 45, 19, 0)
    $Button1 = GUICtrlCreateButton("Beispiel", 62, 44, 45, 19, 0)
    $Button2 = GUICtrlCreateButton("Fertig", 124, 44, 45, 19, 0)
    GUISetState(@SW_HIDE)
    #endregion ### START Koda GUI section ### Form=
    TraySetState()

    [/autoit] [autoit][/autoit] [autoit]

    If FileExists (@TempDir & "\sender.ini") Then
    $sectionen = IniReadSectionNames (@TempDir & "\sender.ini")
    For $i = 1 To $sectionen[0]
    $section = IniReadSection (@TempDir & "\sender.ini","Sender" & $i)
    GUICtrlSetData ($List1,$section[$i][1])
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $Home
    _IENavigate($oIE, "http://www.autoit.de")
    Case $Spielen
    $seite = GUICtrlRead($List1)
    If $seite = "TechnoBase.fm" Then
    _IENavigate($oIE, "http://www.technobase.fm/wmplayer.php?Stream=http://DSL.TechnoBase.eu/listen-dsl.asx")
    ElseIf $seite = "HardBase.fm" Then
    _IENavigate($oIE, "http://www.hardbase.fm/wmplayer.php?Stream=http://mp3.hardbase.fm/listen.asx")
    ElseIf $seite = "HouseTime.fm" Then
    _IENavigate($oIE, "http://www.surfmusik.de/radio/housetime-fm,10832.html")
    ElseIf $seite = "TranceBase.fm" Then
    _IENavigate($oIE, "http://www.trancebase.fm/wmplayer.php?Stream=http://mp3.TranceBase.fm/listen.asx")
    EndIf
    Case $Stop
    GUISetState(@SW_HIDE)
    $msgbox = MsgBox(52, "Achtung", "Diese Datei kann man meines Wissens nur mit dem VLC Media Player öffnen!" & @CRLF & "Möchtest du fortfahren?")
    If $msgbox = 6 Then
    _IEAction($oIE, "saveas")
    GUISetState(@SW_SHOW)
    Else
    GUISetState(@SW_SHOW)
    EndIf
    Case $Save
    GUISetState(@SW_HIDE)
    MsgBox(48, "Credits", "Credits gehen an r1fLeX von Autoit.de")
    GUISetState(@SW_SHOW)
    EndSwitch
    Switch $nMsg[0]
    Case $add
    GUISetState(@SW_SHOW,$Form2)
    Case $Hinzufuegen
    $name2 = GUICtrlRead ($name)
    $link2 = GUICtrlRead ($link)
    IniWrite (@TempDir & "\sender.ini","Sender1",$name2,$link2)
    Case $Button2
    GUICtrlSetData($name,"")
    GUICtrlSetData($link,"")
    GUISetState(@SW_HIDE,$Form2)
    EndSwitch
    $msg = TrayGetMsg()
    Switch $msg
    Case $zeigen
    WinSetState("Radio Streamer", "", @SW_SHOW)
    Case $hidden
    WinSetState("Radio Streamer", "", @SW_HIDE)
    EndSwitch
    WEnd
    GUIDelete()
    Exit

    [/autoit]

    Wäre super wenn mir jemand helfen könnte das ist wohl die schweste Aufgabe die ich hatte oO

    • Offizieller Beitrag

    1. Ich verstehe nicht warum du eigentlich GuiGetMsg(1) aufrufst wenn du nur das 1. Arrayfeld bei deiner Switchabfrage brauchst.
    2.Der ausspruch :"Jedoch stecke ich feste!" bezieht sich auf was ? Was für ein Prob denn ? Das gleiche wie am Anfang ? Was geht nicht ?

  • Bezieht sich darauf das ich nicht weiß wie ich die Eingabe Verarbeiten soll sprich wie ich es am Scriptstart auslesen und in die Liste einbringen soll. Siehst ja meine Ansätze

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <IE.au3>
    #NoTrayIcon
    Opt("TrayMenuMode", 1)
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Radio Streamer", 422, 112, 195, 125)
    $zeigen = TrayCreateItem("Zeigen")
    $hidden = TrayCreateItem("Verstecken")
    GUISetBkColor(0xC0C0C0)
    $List1 = GUICtrlCreateList("", 0, 14, 125, 97)
    _IEErrorHandlerRegister()
    $oIE = _IECreateEmbedded()
    GUICtrlSetData(-1, "HardBase.fm|HouseTime.fm|TechnoBase.fm|TranceBase.fm")
    $Label1 = GUICtrlCreateLabel("Wähle ein Radio aus.", 10, 0, 106, 13)
    $Group1 = GUICtrlCreateObj($oIE, 126, 0, 297, 65)
    $Home = GUICtrlCreateButton("Home", 130, 84, 47, 21, 0)
    $Spielen = GUICtrlCreateButton("Spielen", 184, 84, 47, 21, 0)
    $Stop = GUICtrlCreateButton("Save", 238, 84, 47, 21, 0)
    $Save = GUICtrlCreateButton("Credits", 292, 84, 47, 21, 0)
    $add = GUICtrlCreateButton("Add", 346, 84, 47, 21, 0)
    _IENavigate($oIE, "http://www.autoit.de")
    GUISetState(@SW_SHOW)
    $Form2 = GUICreate("Hinzufügen", 171, 64, 193, 125)
    $Label2 = GUICtrlCreateLabel("Name:", 2, 4, 35, 17)
    $name = GUICtrlCreateInput("", 36, 2, 133, 21)
    $Label3 = GUICtrlCreateLabel("Link:", 8, 24, 27, 17)
    $link = GUICtrlCreateInput("", 36, 22, 133, 21)
    $Hinzufuegen = GUICtrlCreateButton("Add", 2, 44, 45, 19, 0)
    $Button1 = GUICtrlCreateButton("Beispiel", 62, 44, 45, 19, 0)
    $Button2 = GUICtrlCreateButton("Fertig", 124, 44, 45, 19, 0)
    GUISetState(@SW_HIDE)
    #EndRegion ### START Koda GUI section ### Form=
    TraySetState()

    [/autoit] [autoit][/autoit] [autoit]

    If FileExists(@TempDir & "\sender.ini") Then
    $sectionen = IniReadSectionNames(@TempDir & "\sender.ini")
    For $i = 1 To $sectionen[0]
    $section = IniReadSection(@TempDir & "\sender.ini", "Sender" & $i)
    GUICtrlSetData($List1, $section[$i][1])
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    if $nMsg[1] = $Form2 then
    GuiSetState(@SW_HIDE,$Form2)
    Else
    ExitLoop
    EndIf
    Case $Home
    _IENavigate($oIE, "http://www.autoit.de")
    Case $Spielen
    $seite = GUICtrlRead($List1)
    If $seite = "TechnoBase.fm" Then
    _IENavigate($oIE, "http://www.technobase.fm/wmplayer.php?Stream=http://DSL.TechnoBase.eu/listen-dsl.asx")
    ElseIf $seite = "HardBase.fm" Then
    _IENavigate($oIE, "http://www.hardbase.fm/wmplayer.php?Stream=http://mp3.hardbase.fm/listen.asx")
    ElseIf $seite = "HouseTime.fm" Then
    _IENavigate($oIE, "http://www.surfmusik.de/radio/housetime-fm,10832.html")
    ElseIf $seite = "TranceBase.fm" Then
    _IENavigate($oIE, "http://www.trancebase.fm/wmplayer.php?Stream=http://mp3.TranceBase.fm/listen.asx")
    EndIf
    Case $Stop
    GUISetState(@SW_HIDE)
    $msgbox = MsgBox(52, "Achtung", "Diese Datei kann man meines Wissens nur mit dem VLC Media Player öffnen!" & @CRLF & "Möchtest du fortfahren?")
    If $msgbox = 6 Then
    _IEAction($oIE, "saveas")
    GUISetState(@SW_SHOW,$Form1)
    Else
    GUISetState(@SW_SHOW,$Form1)
    EndIf
    Case $Save
    GUISetState(@SW_HIDE,$Form1)
    MsgBox(48, "Credits", "Credits gehen an r1fLeX von Autoit.de")
    GUISetState(@SW_SHOW,$Form1)
    Case $add
    GUISetState(@SW_SHOW, $Form2)
    Case $Hinzufuegen
    $name2 = GUICtrlRead($name)
    $link2 = GUICtrlRead($link)
    IniWrite(@TempDir & "\sender.ini", "Sender1", $name2, $link2)
    Case $Button2
    GUICtrlSetData($name, "")
    GUICtrlSetData($link, "")
    GUISetState(@SW_HIDE, $Form2)
    EndSwitch
    $msg = TrayGetMsg()
    Switch $msg
    Case $zeigen
    WinSetState("Radio Streamer", "", @SW_SHOW)
    Case $hidden
    WinSetState("Radio Streamer", "", @SW_HIDE)
    EndSwitch
    WEnd
    GUIDelete()
    Exit

    [/autoit]

    Also hab erst mal en paar Fehler aus deinem Script beseitigt. Wenn du GuiSetState aufrufst um eine Gui zu verstecken oder anzuzeigen solltest du auch den Winhandle mit angeben sonst bekommst du nur Fehler. Wenn man in deinem Ursprungsscript die Credits aufruft und dann wieder schließt dann wird deine HInzufügengui angezeigt ($Form2 ).Ein GuiSetState(@SW_SHOW) oder HIDE bezieht sich auf das zu letzt erstellte GUI. Hab deine MSG abfrage mal en bischen umgeschrieben .Wenn du den schließen Button in der Hinzufügen Gui drückst wird dann nicht das Programm geschlossen (EXITLOOP) sondern nur das Gui versteckt . Wie du siehst habe ich für die Abfrage in welcher Gui der Schließen-Button gedrückt wird die Erweiterte Ausgabe von GuiGetMsg verwendet.
    Die Senderliste würde ich in einer Textdatei Speichern oder überlege dir wie du die INI Datei verwalten willst .Beim jetzigen Stand des Scriptes kannst du nur 1 Sender Speichern .

    • Offizieller Beitrag

    Wie meinst du das jetz mit StringReplace ? Schreib doch deine Senderliste in ein Array und Speichere das dann mit _FileWriteFromArray in eine Datei deiner wahl. Wenn du die Senderliste in einem Array hast kannst mit _Arrayadd oder _ArrayDelete einen Eintag hinzufügen oder Löschen.
    Edit: Für was soll denn der Home Button sein ? Und warum https://autoit.de/www.autoit.de ?

    • Offizieller Beitrag

    Achso.

    Jetz mal Off-Topic:

    Hast dich weiter oben in nem Post gewundert/beschwert warum peethebee dich angreift. Könnte vielleicht daran liegen weil du einerseits manchmal nen ziemlichen aufriss um dein Fortgeschritten machst. Und dann wieder mit deinen Posts den absolut unwissenden raushängen läßt. Soll jetzt aber keine blöde Anmache werden . Hast zich Posts mehr als ich ,aber der überwiegende teil waren nur Fragen und keine Antworten . Dein Projekt find ich ja net schlecht aber ich denke du solltest den überwiegenden teil vom Code machen und nicht die anderen für dich arbeiten lassen . Wenn ich mal so nachlesen hat dir Mignon eine Anregung gegeben was du verbessern kanst .Deine Antwort ist ok mach ich und dann weißt du net wie du es machen sollst . Das heißt denk mal an bischen nach und lass das nicht von anderen lösen.

    Ein Paar Denkanstöße für die Lösung :

    Senderliste in ein Array
    Array in eine Datei speichern
    Array bei Programmstart aus der Datei auslesen .
    Da die GUICtrlSetData schlecht mit dem Array umgehen kann würde ich dei einzelnen Arrayelemente mit anschließendem | nach jedem element in einen String kopieren .

    Ich denke das kann man aber auch mit nen INI gut hinbekommen .Man muß sich nur ein Konzept für die INI überlegen .


    So , nicht Böse sein wegen dem was ichn geschrieben haben , ist nur meine Meinung.

  • Gut , ich werde mich ejtzt zurückhalten mit meinen Fragen!
    Aber noch eine Offtopic-Frage:
    Was meisnt du mit

    Zitat

    Könnte vielleicht daran liegen weil du einerseits manchmal nen ziemlichen aufriss um dein Fortgeschritten machst

    Ich finde nicht das ich alzu große Fortschritte gemacht habe! Ich poste nur gerne meine Scripts um Feedback zu kreigen um besser zu werden das ist alles.