首页 > 解决方案 > 如何将 AppleScript/JXA 支持添加到非可可应用程序?

问题描述

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

但是,所有添加脚本支持的指南都假设有问题的应用程序是用 Cocoa 编写的。我正在查看的许多 FOSS 应用程序是……不是。是否有人有一些很好的资源可以将非本地功能公开给本地系统服务,就像脚本所需要的那样?

标签: javascriptapplescriptopen-sourcejavascript-automation

解决方案


实现非平凡的Apple 事件支持是正确的 PITA;如果你必须在 C/C++ 中从头开始实现它(CocoaScripting.framework 对于非 Cocoa 应用程序来说是一个非入门者,任何第三方框架都将大量过时)。现在我什至不会尝试:AppleScript 正在消亡,JXA 已经消亡,Apple 对 Mac 自动化未来的计划(如果有的话)保持沉默。如果/当快捷方式来到 macOS 时,这可能会改变,但这不会在 10.15 之前发生。

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

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


推荐阅读