我想打开另一个单独的应用程序,以迭代方式打开该应用程序的项目/文档,然后关闭应用程序。我还想关闭在打开文档期间弹出的所有模态和非模态对话框。我希望关闭所有对话框,包括崩溃对话框,以防应用程序失败/崩溃。
使用cocoa或Applecript实现这一目标的最佳方式是什么?从哪里可以获得更详细的信息?
答案 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/,它看起来像是一个不错的起点。