gpt4 book ai didi

macos - 苹果操作系统 X : interacting with an application programmatically

转载 作者:行者123 更新时间:2023-12-02 01:37:47 24 4
gpt4 key购买 nike

我正在做一个项目,我需要在现有应用程序(我自己的)上调用方法并使用它的一些功能。例如我的应用程序 ThunderBolt 在 Mac OS X 10.10 上运行。它还提供了一个事件字典,可以通过 Apple Script 或我还不知道的其他方式从外部调用这些事件。

我的问题是在 Mac OSX 上以编程方式与应用程序交互有哪些不同(和更好)的方式?如果我在 Apple Script Editor 中使用类似以下代码的内容:

tell application "ThunderBolt"
set open_file to (choose file with prompt "Choose the file you wish to parse")
set theContents to read open_file as data
set retPict to (image convert theContents)
end tell

然后它将启动带有启动画面的 ThunderBolt,然后调用“图像转换”。这可以通过 NSAppleScript 完成,但它仍然会启动应用程序并调用它的方法/事件。

是否有可能以某种方式在应用程序中创建一个类的实例(或获取指向该类的指针)并使用它?类似于 Windows 系统上的 COM 或自动化的东西?

最佳答案

如果您使用的是 OS X 10.10,您可以考虑查看 JavaScript for Automation (JXA) .

有了它,您显然可以在您的应用程序中构建方法,这些方法可以从用 JS 编写的客户端脚本调用(尽管我还不熟悉如何在应用程序端处理此类实现的细节)。但是作为 OS X Yosemite 的一部分发布的许多应用程序都内置了此类 API(例如 iTunes 和 Finder)。

这是 Alex Guyot 撰写的关于 JXA 的精彩教程:http://www.macstories.net/tutorials/getting-started-with-javascript-for-automation-on-yosemite/

JXA-Cookbook 存储库似乎也是一个不错的资源:https://github.com/dtinth/JXA-Cookbook/wiki

这是一个简短的示例 - 此脚本使 iTunes 返回一个轨道。在 iTunes 播放时尝试(通过将文本放入脚本编辑器,将语言选项设置为 JavaScript,然后点击运行按钮):

iTunes = Application('iTunes')
state = iTunes.playerState()
// Console msgs show up in the Messages tab of the bottom view:
console.log("playerState: " + state)
iTunes.backTrack()

或者,您可以将代码放入 .js 文件中并在命令行上运行它:

$ osascript itunes-backTrack.js
playerState: playing

关于macos - 苹果操作系统 X : interacting with an application programmatically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30166064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com