Aus endlos Schleife Gui beenden

  • Hallo Bugfix!


    ist raus...

    Danke für den Hinweis


    Nachtrag: Post 1 ist bearbeitet... Leider ist immer noch nicht mein Problem behoben.

    • Offizieller Beitrag

    In Zeile 40 sollte das stehen:

    [autoit]

    GUICtrlSetOnEvent($exit, "CLOSEClicked")

    [/autoit]
  • Hallo!

    Es Funktioniert... Aber eben nicht wenn man einen Channel aufgewählt hat und er anfängt die Datei herunter zu laden!
    Nix zu machen, der will einfach nicht aufhören :(
    Danke Raupi für den Tipp, aber leider war es das nicht!

  • @noise: versuche mal diese schleife:

    [autoit]


    while @InetGetActive
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $exit
    InetGet( 'abort' )
    EndSwitch
    GUICtrlSetData($lbl_filename, ""& $res3[$i+1] & " - " & $res2[$i+1] & ".mp3" & "")
    sleep (100)
    ;$percent = Round((@InetGetBytesRead / ((($res[$i] / 1000) * 128 * 1024) / 8)) * 100, 2)
    ;GUICtrlSetData($progress, $percent)
    WEnd

    [/autoit]
    • Offizieller Beitrag

    andygo das wird nicht funktionieren. Das Script arbeitet im OnEventMode. GuiGetMsg funktioniert dabei nicht.

  • andygo das wird nicht funktionieren. Das Script arbeitet im OnEventMode. GuiGetMsg funktioniert dabei nicht.

    stimmt. dann eben vor die schleife

    [autoit]

    Opt("GuiOnEventMode", 0)

    [/autoit]


    und nach der schleife

    [autoit]

    Opt("GuiOnEventMode", 1)

    [/autoit]

    so benutz ich es selbst und es klappt

  • Hallo!

    Danke für die Tipps...

    Gibt es noch eine Möglichkeit?
    Weil so, reagiert er nur auf den Stop Button und nicht auf das X Rechts oben,
    dass er evtl. das Script sofort beendet!?
    Noch jemand eine Idee?

  • Ich habe auch oft das Problem, dass ich nach gestartetem Script nicht mehr alle Funktionen benutzen kann, auch mit OnEvent-Zeug...
    z.B. -> Programm hat nen falschen Value in einen Input bekommen, gibt ne Fehler-MSG-Box und dann schicke ich den Bediener in einer Schleife... "Sleep (60000)"...

    Und dann kann er den Eintrag in dem Input ja korrigieren, aber NICHTS sonst mehr im GUI bedienen...

    Bisher hatte ich das in jedem meiner Scripte, dass ich das nicht perfekt lösen konnte und bei sowas das Script beenden lassen musste...


    Also wäre auch sehr dankbar, wenn das Problem jemand löst(allgemein)... Oo


    Ich hatte erst immer "Sleep (10)" und jemand meinte zu mir, dass jedes Mal, wenn das Script einen Befehl bearbeitet, OnEvent-Zeugs nicht klappt, ich also Sleep (60000) machen sollte, dann würde es gehen... Ging leider nicht...


    LG

  • Hallo!

    Danke für die Tipps...

    Gibt es noch eine Möglichkeit?
    Weil so, reagiert er nur auf den Stop Button und nicht auf das X Rechts oben,
    dass er evtl. das Script sofort beendet!?
    Noch jemand eine Idee?

    evtl. so: ?

    [autoit]


    Opt("GuiOnEventMode", 0)
    while @InetGetActive
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $exit
    InetGet( 'abort' )
    exit
    Case $form1
    InetGet( 'abort' )
    exit
    EndSwitch
    GUICtrlSetData($lbl_filename, ""& $res3[$i+1] & " - " & $res2[$i+1] & ".mp3" & "")
    sleep (100)
    WEnd
    Opt("GuiOnEventMode", 1)

    [/autoit]
  • Hi!

    Funktioniert irgendwie alles nicht..

    So damit ihr das auch mal Testen könnt:

    Spoiler anzeigen


    RequireAdmin
    #include <array.au3>
    #include <inet.au3>
    #include <string.au3>
    #Include <Constants.au3>
    $Form1 = GUICreate("Ripper BETA DEMO by Noise", 395, 225, 192, 124)
    $lbl_filename = GUICtrlCreateLabel("", 8, 160, 372, 20)
    $okbutton = GUICtrlCreateButton("OK", 304, 16, 57, 23, 0)
    ;GUICtrlSetOnEvent($okbutton, "OKButton")
    GUICtrlSetFont(-1, 8, 400, 0, "Verdana")
    GUISetState(@SW_SHOW)

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $okbutton
    start()
    Sleep(1000) ; Im Leerlauf bummeln
    Case $form1
    InetGet( 'abort' )
    exit
    EndSwitch
    WEnd


    func start()
    $result = _INetGetSource ( "http://ext.last.fm/2.0/?api%5Fsig=49404566dfc9126dd7807cbfe9a6d4e6&flashresponse=true&lang=de&fod=true&sk=fea1c8f4570bf185a1c4d6853105b29c&y=1258573209&api%5Fkey=da6ae1e99462ee22e81ac91ed39b43a4&method=radio%2EgetPlaylist" )
    $res = _StringBetween($result,"<location>", "</location>")
    $res2 = _StringBetween($result,"<title>", "</title>")
    $res3 = _StringBetween($result,"<creator>", "</creator>")
    for $i = 0 to UBound($res) -1
    InetGet($res[$i], $res3[$i+1] & " - "& $res2[$i+1] & ".mp3",1,1)
    While @InetGetActive
    GUICtrlSetData($lbl_filename, ""& $res3[$i+1] & " - " & $res2[$i+1] & ".mp3" & "")
    ToolTip("Bytes gedownloadet! = " & @InetGetBytesRead)

    Wend
    next

    EndFunc
    start()

    2 Mal editiert, zuletzt von noise (23. November 2009 um 18:31)

  • [autoit]

    #RequireAdmin
    #include <array.au3>
    #include <inet.au3>
    #include <string.au3>
    #include <Constants.au3>
    #include <GUIConstants.au3>
    $Form1 = GUICreate("Ripper BETA DEMO by Noise", 395, 225, 192, 124)
    $lbl_filename = GUICtrlCreateLabel("", 8, 160, 372, 20)
    $okbutton = GUICtrlCreateButton("OK", 304, 16, 57, 23, 0)
    ;GUICtrlSetOnEvent($okbutton, "OKButton")
    GUICtrlSetFont(-1, 8, 400, 0, "Verdana")
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $okbutton
    start()
    Case $GUI_EVENT_CLOSE
    InetGet('abort')
    Exit
    EndSwitch
    WEnd

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

    Func start()
    $result = _INetGetSource("http://ext.last.fm/2.0/?api%5Fsig=49404566dfc9126dd7807cbfe9a6d4e6&flashresponse=true&lang=de&fod=true&sk=fea1c8f4570bf185a1c4d6853105b29c&y=1258573209&api%5Fkey=da6ae1e99462ee22e81ac91ed39b43a4&method=radio%2EgetPlaylist")
    $res = _StringBetween($result, "<location>", "</location>")
    $res2 = _StringBetween($result, "<title>", "</title>")
    $res3 = _StringBetween($result, "<creator>", "</creator>")
    For $i = 0 To UBound($res) - 1
    InetGet($res[$i], $res3[$i + 1] & " - " & $res2[$i + 1] & ".mp3", 1, 1)
    While @InetGetActive
    If GUICtrlRead($lbl_filename) <> $res3[$i + 1] & " - " & $res2[$i + 1] & ".mp3" Then GUICtrlSetData($lbl_filename, $res3[$i + 1] & " - " & $res2[$i + 1] & ".mp3")
    ToolTip("Bytes gedownloadet! = " & @InetGetBytesRead)

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

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    InetGet('abort')
    Exit
    Case $okbutton
    InetGet('abort') ; der download wird abgebrochen, und der nächste gestartet.
    ToolTip("")
    ;~ Case $Abbruchbutton ;den knopf gibts nocht nicht, aber so würdest du ALLE downloads abbrechen
    ;~ InetGet('abort')
    ;~ ToolTip("")
    ;~ ExitLoop
    EndSwitch
    WEnd
    Next

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

    EndFunc ;==>start

    [/autoit][autoit][/autoit][autoit][/autoit]
  • :thumbup:
    ^Mehr kann man dazu nicht sagen! ;)

    Danke schön an alle die mir geholfen haben, vorallen Bugfix den ich so genervt hab!!! :D

    Gruß Noise