Ваш скрипт не будет работать.Когда вы говорите приложению сделать что-то, appleScript ждет, пока приложение сделает это, прежде чем будет выполнен остальной код.Таким образом, сценарий ожидает, пока Finder завершит свою задачу, прежде чем перейти к коду системных событий.Таким образом, по сути, в вашем скрипте команда системных событий не запускается до тех пор, пока диалоговое окно не будет закрыто, что означает, что вы никогда не сможете закрыть диалоговое окно таким способом.
Однако вы можете сказать applecript не ждать ответа отПриложение, как это ...
ignoring application responses
tell application "Finder"
activate
display dialog "blah"
end tell
end ignoring
delay 0.5
tell application "System Events" to keystroke return
Поскольку appleScript является однопоточным, другой способ будет использовать два отдельных процесса.Один, чтобы показать диалог и второй, чтобы закрыть диалогВы можете сделать это с двумя различными текстовыми кодами, по одному для каждой задачи.Другой способ - использовать оболочку для создания одного процесса, затем вы отправляете этот процесс в фоновый режим, чтобы appleScript не дождался завершения оболочки, а затем закрыли диалоговое окно.Вот как вы могли бы сделать это таким образом.
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
Итак, вы видите, что есть несколько способов сделать это.Удачи.