与应用程序进行编程交互的 Mac OS X

3
我正在处理一个项目,需要在现有应用程序(我的应用程序)上调用方法并使用其某些功能。例如,我的应用程序ThunderBolt运行在Mac OS X 10.10上。它还提供了一些事件的字典,可以通过Apple Script或其他我尚不知道的方式从外部调用。
我的问题是,在Mac OSX上以编程方式与应用程序交互的不同(更好)的方法是什么?如果我在Apple Script编辑器中使用以下代码:
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,然后调用“image convert”方法。可以通过NSAppleScript实现这一点,但仍需要启动应用程序并在其上调用方法/事件。

是否可能创建该应用程序中的类实例(或获取指向其的指针)并使用它?与Windows系统上的COM或自动化类似的东西?


1
实现一个脚本附加组件,也许? - fartheraway
2个回答

3
如果你在使用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

0

在我看来,指定“tell application”的方式是最好的。

你的应用程序需要调用什么功能?也许有些功能可以使用Applescript完成?这将大大简化事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接