Erkennen, wenn der Benutzer auf Stop klickt

0

Ich habe ein Programm, in dem der Benutzer jederzeit auf Stopp klicken und das Programm stoppen kann, während es ausgeführt wird.

Ich suche nach einer Möglichkeit, um zu erkennen, ob der Benutzer im Skript-Editor auf die Schaltfläche "Stopp" klickt (was den Fehler "-128 Benutzer abgebrochen" verursacht), damit ich vor dem Schließen des Programms eine kleine Bereinigung vornehmen kann.

Gibt es eine Möglichkeit, dies zu tun?

user3932000
quelle

Antworten:

2

Sie können einen Try- Block wie folgt verwenden:

repeat -- your loop
    try
        --
        -- your code in the loop
        --
    on error err number n
        if n = -128 then -- User canceled
            --
            -- code to  cleanup before the program closes
            --
            return -- exit this script
        end if
    end try
end repeat
jackjr300
quelle
0

Der Skript-Editor befindet sich über dem Skript. Wenn man dort anhält, wird keine weitere Zeile ausgeführt.

Wenn Sie andererseits eine Anwendung daraus erstellt haben und auf eine der dort angezeigten Schaltflächen (z. B. durch display dialog) klicken, wird ausgelöst, wofür Sie diese Schaltfläche programmiert haben.

Phönix
quelle
In meinem Programm läuft ständig eine Schleife und ich möchte jederzeit aus ihr ausbrechen können. Gibt es eine Möglichkeit, einen Dialog mit der Schaltfläche zu führen, der dies ermöglicht?
user3932000
Wenn Sie Ihre Schleife verwenden (oder eine Schleife, die nicht zu lange wartet), können Sie nach dem Status einer Variablen fragen, um die Wiederholungsschleife zu verlassen. Definieren Sie diese Variable global und ändern Sie sie in einem aufgerufenen AppleScript-Handler on quit. Wenn Sie Application Menu> Quit(oder die entsprechende Taste auf der Tastatur) drücken, durchläuft Ihr Programm die Variable und bricht die Schleife ab. Ich konnte es nicht schnell finden, aber Apple hat ein PDF mit dem Titel "AppleScript Language Guide", das auch den on quitHandler beschreibt und Ihnen weitere Ideen geben sollte.
Phoenix
Wenn Sie Ihre Frage mit Ihrem Kommentar erweitern, werde ich dies auch mit meiner Antwort tun.
Phoenix