让 AppleScript 等待应用程序完成加载

Chr*_*cht 10 applescript macos

我有一个 Applescript 来启动我的工作环境,但对它有一些小问题。我希望脚本启动几个程序,然后在它们启动后隐藏它们。目前的代码如下所示:

tell application "Firefox" to activate

delay 0.5

tell application "Finder"
  set visible of process "Firefox" to false
end tell
Run Code Online (Sandbox Code Playgroud)

显然,延迟 0.5只是一个占位符,理想情况下,我希望在加载完成后立即隐藏程序。不幸的是,我的加载时间变化很大(从 0.2 到 5 秒)是否有类似回调或函数来监视应用程序事件?

Dan*_*eck 7

在循环中查询可见性状态,重复将其设置为不可见,直到它起作用为止:

set appname to "Firefox"
tell application appname to launch
tell application "System Events"
    repeat until visible of process appname is false
        set visible of process appname to false
    end repeat
end tell
Run Code Online (Sandbox Code Playgroud)

监视 AppleScript Editor 的事件日志,很明显可能需要尝试几次;当我用 Xcode 尝试时,以下内容重复了 1490 次:

set visible of process "Xcode" to false
get visible of process "Xcode"
    --> true
Run Code Online (Sandbox Code Playgroud)

在它最终起作用之前:

set visible of process "Xcode" to false
get visible of process "Xcode"
    --> false
Run Code Online (Sandbox Code Playgroud)