如何使用cocoa或applescript打开,关闭和关闭另一个应用程序的对话框?

时间:2012-06-07 14:19:36

标签: macos cocoa applescript

我想打开另一个单独的应用程序,以迭代方式打开该应用程序的项目/文档,然后关闭应用程序。我还想关闭在打开文档期间弹出的所有模态和非模态对话框。我希望关闭所有对话框,包括崩溃对话框,以防应用程序失败/崩溃。

使用cocoa或Applecript实现这一目标的最佳方式是什么?从哪里可以获得更详细的信息?

1 个答案:

答案 0 :(得分:2)

如果应用程序有脚本界面,当然最好的办法就是这样做。

您通常不希望迭代AppleScript,而是对查询的所有结果进行操作。

例如,对于几乎所有实现“标准套件”的应用程序,您都可以:

tell app "TextEdit" to close windows

这比以下更简单(更快,更可能在目标应用中正确实施):

tell app "TextEdit"
  repeat with theWindow in windows
    close theWindow
  end repeat
end tell

当然,这可能会弹出保存/放弃更改对话框,并且可能会跳过或包含对话框和检查器等,具体取决于应用程序的用户模型。

更重要的是,如果应用不支持脚本(和标准套件),它将无效。

此外,它关闭崩溃报告根本没有帮助 - 该窗口由CrashReporter拥有,而不是原始应用程序(这是一件好事,因为你不能再与原始应用程序通信了,现在它崩溃了......)。

另一种选择是系统事件中的UI脚本功能。这仅在启用辅助访问时才有效。找出你想要处理的窗口,以及你想要的控件,也可能有点繁琐。

例如:

tell app "System Events"
  click button 1 of windows of application process "TextEdit"
end tell

这可以通过查找TextEdit进程拥有的每个窗口(无论何种类型),并模拟该窗口中第一个按钮(红色关闭按钮)的单击来实现。

如果你谷歌“AppleScript UI脚本”,你应该找到很多不同的指南。我发现的第一个打击是http://www.makeuseof.com/tag/applescripts-ui-scripting-mac/,它看起来像是一个不错的起点。