循环查询应用程序状态可防止退出

时间:2018-08-27 01:55:58

标签: applescript

我想查询iTunes打开时的playerState属性。这是起始版本:

var itunes = Application('iTunes')

while (true) {
    if (itunes.running()) {
        console.log(itunes.playerState())
    }
    delay(0.01)
}

上述代码的问题是,它阻止iTunes正常关闭(如右键单击->退出)。我相信这是因为发生了,因为获得playerState属性会产生启动iTunes的调用。 (在没有itunes.running()保护的情况下,脚本启动后,iTunes将立即启动。)

增加delay是一种变通办法,可以降低iTunes退出后保持打开状态的可能性,但不会使其变为零或无法真正解决问题。

我看到了两种解决途径:

  1. 是否可以在不启动应用程序的副作用的情况下访问应用程序属性? (可以肯定的答案是目前没有。)
  2. AppleScript可以查询应用程序是否收到SIGTERM / SIGKILL信号吗?还是知道某个应用程序处于“退出”阶段?

0 个答案:

没有答案