L'interaction utilisateur "Choisir dans la liste" d'Applescript comporte un bouton "annuler" - je souhaite que cette "annulation" indique au script d'arrêter immédiatement l'exécution. En d'autres termes:
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
Je n'arrive pas à trouver comment faire cela - est-ce que quelqu'un sait comment?
Le numéro d'erreur -128 est "Utilisateur annulé" et arrêtera le script - par exemple:
if wmColor is false then
error number -128
end if
"return" indique à un script d'arrêter l'exécution:
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
Dans le cas spécifique d'un AppleScript appelé via osascript, il peut être résilié en renvoyant le statut 0 au shell, en procédant comme suit:
tell me to "exit"
Résilier, émettre un message et renvoyer l'état 1, en effectuant:
tell me to error "{your message}"
Ce qui précède écrit une ligne comme celle-ci dans l'erreur standard:
{scriptname}: execution error: {your message} (-2700)
Voici un exemple qui remplace le cryptique "-2700" et fait probablement ce que jefflovejapan recherche:
tell me to error "Terminated by user" number 0
qui écrit ceci en erreur standard:
{scriptname}: execution error: Terminated by user (0)
et retourne un statut de 1.
J'ai appris cela par expérience, après avoir lu: Guide du langage AppleScript - Instructions d'erreur
J'ai trouvé que cela fonctionnait bien pour les scripts exécutés dans une application (par exemple, 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
Ceci a été modifié à partir de cette réponse .
Vous pouvez utiliser le mot "quitter" pour quitter l'application actuelle. Vous pouvez l'utiliser si vous enregistrez votre script en tant qu'application.
if wmColor is false
quit
end if