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

标签 macos cocoa applescript

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

使用 cocoa 或 applescript 实现此目的的最佳方法是什么?我可以从哪里获得更详细的信息?

最佳答案

如果应用程序有脚本接口(interface),当然最好的方法就是这样做。

您通常不想在 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/它看起来是一个不错的起点。

关于macos - 如何使用 cocoa 或 applescript 打开、关闭和关闭另一个应用程序的对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10933711/

相关文章:

java - Mac 64位cocoa环境下如何获取AWT控件的句柄?

swift - MIME 类型的所有应用程序 URL

macos - 从 Mac OS 终端使屏幕闪烁

macos - 使用 GUI Applescript 解锁系统偏好设置

mysql - 交响乐; SQLSTATE[HY000] [2002] 使用 127.0.0.1 作为数据库主机时没有此类文件或目录

perl - 如何找出旧 Mac OS X 版本上可用的 Perl 版本?

macos - 尝试启动docker时不断收到无法读取CA证书

cocoa - 更改 CALayer 属性的动画时间

macos - 如何在不移动子 NSWindows 的情况下移动 NSWindow

Applescript 逐行读取文件