Votre script ne fonctionnera pas. Lorsque vous demandez à une application de faire quelque chose, l'applet attend que l'application le fasse avant que le reste du code ne soit exécuté. En tant que tel, le script attend que le Finder termine sa tâche avant de passer au code des événements système. Donc, dans votre script, la commande system events n'est pas exécutée avant que la boîte de dialogue ne soit fermée, ce qui signifie que vous ne pouvez jamais fermer une boîte de dialogue de cette façon.
Cependant, vous pouvez dire AppleScript ne pas attendre une réponse d'une application comme celui-ci ...
ignoring application responses
tell application "Finder"
activate
display dialog "blah"
end tell
end ignoring
delay 0.5
tell application "System Events" to keystroke return
Depuis AppleScript est un seul thread, une autre façon serait d'utiliser deux processus distincts. Un pour montrer le dialogue et un second pour fermer le dialogue. Vous pouvez le faire avec 2 applescripts différents, un pour chaque tâche. Une autre façon serait d'utiliser le shell pour créer un processus, puis vous envoyez ce processus à l'arrière-plan afin que l'applescript n'attend pas que le shell se termine, puis ferme la boîte de dialogue. Voici comment vous pourriez le faire de cette façon.
do shell script "osascript -e 'tell application \"Finder\"' -e 'activate' -e 'display dialog \"blah\"' -e 'end tell' > /dev/null 2>&1 &"
delay 0.5
tell application "System Events" to keystroke return
Donc vous voyez qu'il y a plusieurs façons de le faire. Bonne chance.
et votre question est ..? – stib