Exit nur für gerade ausgeführte Function

  • Hi, meine GUI (OnEventMode) startet auf Knopfdruck eine Function.

    Während die Function läuft wird per Interrupt abgefragt ob der ESC-Button auf der Tastatur gedrückt wurde.

    Ist dies der Fall wird der Exit-Befehl gesendet.

    Dabei schließt sich aber immer mein gesammtes Autoit Programm, also auch die GUI.

    Frage: Gibt es einen Befehl, der die laufende Funktion unterbricht, nicht aber die GUI


    Thanx für eure Hilfe

  • Hallo,

    Exit beendet das gesamte Programm.
    Die Funktion wird beendet, indem du per EXITLOOP aus der ESC-Abfrageschleife springst.

    .Andy

  • mit Exitloop kommst du aus einer Schleife raus...(while, do, for).
    aus einer Funktion kommst du mit Return raus.

    Es klingt jedoch irgendwie so, als würdest du eine Dauerschleife innerhalb einer Funktion benutzen...
    Das würde dann nicht ganz mit dem OnEventMode zusammenpassen... ;)

    lgE

    • Offizieller Beitrag

    Das häufigste Anfänger-Problem: Eine Endlosschleife in einer "Event"-Funktion. Das blockiert alle anderen Events.

    Eine Funktion, die aufgrund eines User-Events aufgerufen wurde, sollte möglichst schnell wieder verlassen werden (mit Return bzw. EndFunc, nicht durch Aufruf weiterer Funktionen), damit die GUI wieder reagieren kann.

  • Hi,

    Hast du bei den AutoItSetOption GUICloseOnESC=0 gesetzt?

    Auszug aus der Hilfe:

    When ESC is pressed on a GUI the $GUI_EVENT_CLOSE message is sent. This option toggles this behavior on and off.
    1 = Send the $GUI_EVENT_CLOSE message when ESC is pressed (default).
    0 = Don't send the $GUI_EVENT_CLOSE message when ESC is pressed.

    EXIT schließt sowieso das Programm, s. Beiträge oben.

    Gruß Rabbit

  • ich mach des meisstens falls ich in der funktion ne (dauer)-schleife nutze so:

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

    $stop = false

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

    ;jetzt anstatt while 1

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

    func mfunc()
    while not $stop
    ...
    ...
    wend
    $stop = false
    endfunc

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

    func setstop()
    $stop = true
    endfunc

    [/autoit]

    nich so ganz edel geht aber auch ;)