你的脚本不起作用。当您告诉应用程序执行某项操作时,applescript 会等待应用程序执行此操作,然后再执行其余代码。因此,该脚本正在等待 Finder 完成其任务,然后再继续执行系统事件代码。因此,基本上在您的脚本中,系统事件命令直到对话框被关闭后才会运行,这意味着您永远不能以这种方式关闭对话框。
但是,您可以告诉 applescript 不要等待来自这样的应用程序的响应......
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 是单线程的,另一种方法是使用两个单独的进程。一个显示对话框,第二个关闭对话框。您可以使用 2 个不同的 applescripts 来做到这一点,每个任务一个。另一种方法是使用 shell 创建一个进程,然后将该进程发送到后台,这样 applescript 就不会等待 shell 完成,然后关闭对话框。这就是你如何做到这一点的方法。
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
所以你看到有几种方法可以做到这一点。祝你好运。