我想打开另一个单独的应用程序,以迭代的方式打开该应用程序的项目/文档,然后关闭该应用程序。我还想关闭在打开文档时弹出的所有模态和非模态对话框。我想要关闭所有的对话框,包括崩溃对话框,以防应用程序失败/崩溃。
使用cocoa或applescript实现这一点的最佳方式是什么?我可以从哪里获得更详细的信息?
发布于 2012-06-08 00:04:30
如果应用程序有一个脚本接口,最好的方法当然是这样做。
您通常不希望在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/,它看起来是一个不错的起点。
https://stackoverflow.com/questions/10933711
复制相似问题