如何为非 cocoa 应用添加 AppleScript/JXA 支持?

How to add AppleScript/JXA support to non cocoa app?

我正在研究可以为开源做出贡献的东西。我使用的许多 FOSS 应用程序的一个痛点是它们不支持脚本。我认为至少尝试为我使用的一些应用程序添加一些基本的脚本支持会很好,例如OBS.

但是,所有添加脚本支持的指南都假定相关应用程序是用 Cocoa 编写的。我正在查看的很多这些 FOSS 应用程序都是……不是。是否有人有一些很好的资源来将非本机功能暴露给本机系统服务,就像编写脚本所需的那样?

实施非平凡 Apple 事件支持是正确的 PITA;大规模所以如果你必须在 C/C++ 中从头开始实现它(CocoaScripting.framework 是非 Cocoa 应用程序的非启动器并且任何第三方框架都将大大过时).现在我什至不会尝试:AppleScript 快死了,JXA 已经死了,Apple 对 Mac 自动化的未来计划(如果有的话)保持沉默。这可能会改变 if/when macOS 的快捷方式,但这不会在 10.15 之前发生。

如果您只想添加真正基本的自动化支持(即没有'object model',只是像play FILE/convert FILE这样的简单命令)并且该应用程序与 macOS 事件循环配合得很好,安装 Apple 事件处理程序并通过旧的 C Apple 事件管理器解压和打包简单的参数和结果(数字,字符串)并不是非常困难(尽管仍然非常乏味)API.它不会很 "AppleScript-ish",但至少它是可以实现的。或者,如果应用程序已经有自己的内置(例如 JavaScript)脚本支持,实现一个 do script CODE [with parameters {ARG1,ARG2,…}] 处理程序来调用它是一个简单的胜利。

就文档和示例代码而言,搜索 AEInstallEventHandler 并查看出现的内容。不会很好,但这已经很好了。准备好自己弄清楚这些东西。