Rileva se l'utente colpisce Stop


0

Ho un programma in cui l'utente può premere Stop e interrompere il programma mentre è in esecuzione in qualsiasi momento.

Sto cercando un modo per rilevare se l'utente preme il pulsante Stop in Script Editor (producendo l'errore -128 "Utente annullato"), quindi posso fare un po 'di pulizia prima che il programma si chiuda.

C'è un modo per fare questo?

Risposte:


2

Puoi usare a provare blocco come questo:

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

0

Script Editor è sopra lo script. Se un colpo finisce qui, non viene eseguita alcuna linea.

Se, dall'altra parte, hai creato un'applicazione da esso, premendo qualsiasi pulsante visualizzato lì (ad esempio attraverso display dialog ), attiverà qualsiasi cosa tu abbia programmato quel pulsante da fare.


Nel mio programma, un ciclo è costantemente in esecuzione e voglio essere in grado di uscirne in qualsiasi momento. C'è un modo per avere una finestra di dialogo con il pulsante che può farlo?
user3932000

Se usi il tuo loop (o un ciclo, che non aspetta troppo a lungo), puoi chiedere uno stato di una variabile per uscire dal ciclo di ripetizione. Definisci tale variabile globalmente e modificala all'interno di un gestore AppleScript chiamato on quit. Quando colpisci Application Menu & Gt; Quit (o l'equivalente della tastiera) il programma lo eseguirà, modificherà la variabile e uscirà da quel ciclo. Non ero in grado di trovarlo rapidamente, ma Apple ha un PDF intitolato "Guida al linguaggio AppleScript", che descrive anche il on quit gestore e dovrebbe darti ulteriori idee.
Phoenix

Se espandi la tua domanda con il tuo commento, lo farò anche con la mia risposta.
Phoenix
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.