2011-12-23 17 views
16

La interacción del usuario de "elegir de la lista" de Applescript tiene un botón "cancelar". Quiero que este "cancelar" indique al script que deje de ejecutarse inmediatamente. En otras palabras:Cómo decirle a un Applescript que deje de ejecutar

set wmColor to choose from list {"Black", "Black for all", "White", 
    "White for all"} with prompt "What color should the watermark be?" 
    default items "White for all" without multiple selections allowed and 
    empty selection allowed 
if wmColor is false 
    *tell script to stop executing* 
end if 

Parece que no se puede encontrar cómo hacerlo. ¿Alguien sabe cómo?

Respuesta

23

Número de error -128 es "Cancelado usuario", y se detendrá la secuencia de comandos - por ejemplo:

if wmColor is false then 
    error number -128 
end if 
+3

Esto solo funciona si no está incluido en un bloque try que detecta tales errores. – spyle

1

encontré esto funciona bien para las secuencias de comandos que se ejecutan dentro de una aplicación (por ejemplo, InDesign CS5.5) :

repeat 100 times 
    tell application ("System Events") to keystroke "." using command down 
    delay (random number from 0.5 to 5) 
end repeat 

Esto fue modificado a partir de este answer.

7

"retorno" cuenta una secuencia de comandos para detener la ejecución:

display dialog "Do you want to exit this script?" with icon note buttons {"Exit", "Continue"} 
if the button returned of the result is "Exit" then 
    return 
end if 
+0

¿Podría elaborar más su respuesta agregando un poco más de descripción acerca de la solución que proporciona? – abarisone

+0

En mi opinión, para detener la ejecución de un script de forma normal, es la opción ** mucho mejor ** usar 'return' que lanzar una excepción de usuario. – halloleo

+1

Bueno, realmente no: le dice al manejador actual que regrese (sin ningún valor). Si estás en el nivel superior de tu script, está bien, terminará la ejecución, pero si estás en un controlador devolverá un cero a lo que sea que lo llame y el script continuará ejecutándose alegremente (con un posible error inesperado). resultados si la persona que llama no espera un valor faltante). – dsmudger

-1

Puede utilizar la palabra "Salir" para salir de la aplicación actual. Puede usar esto si guarda su secuencia de comandos como una aplicación.

if wmColor is false 
    quit 
end if 
+5

Solo tenga en cuenta que si utiliza el comando quit en un script que se ejecuta dentro de Script Editor, saldrá del Editor de scripts. – garetmckinley

+0

"salir" no funciona si se encuentra en un bloque "Finder" de la aplicación tell. –

Cuestiones relacionadas