javascript - 如何向非 cocoa 应用程序添加 AppleScript/JXA 支持?

标签 javascript applescript open-source javascript-automation

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

但是,所有添加脚本支持的指南都假设相关应用程序是用 Cocoa 编写的。我正在查看的许多自由和开源应用程序都……不是。是否有人有一些好的资源可以将非 native 功能公开给 native 系统服务,这是脚本编写所需的?

最佳答案

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

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

就文档和示例代码而言,搜索 AEInstallEventHandler看看会发生什么。不会很好,但也已经尽力了。准备好自己解决很多问题。

关于javascript - 如何向非 cocoa 应用程序添加 AppleScript/JXA 支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52582482/

相关文章:

javascript - 如何在单击 anchor 文本时触发 onclick 事件

objective-c - 在沙盒中从 objective-c /swift 重置 Finder

mysql - Applescriptable mySQL 客户端 - 低成本还是免费?

open-source - 静态类型开源跨平台现代编程语言

c++ - 想写电气工程相关的开源软件

javascript - 如何在多维数组中找到匹配的数字?

javascript - 学习 JavaScript : Is there a way to change the image file of a group of images without using individual ids?

user-interface - 使用 AppleScript 列出窗口中所有 UI 元素的名称(GUI 脚本)

open-source - 中文开源OCR

c# - 将值从代码隐藏传递到 Javascript