对于我正在编写的应用程序,我需要访问其他一些应用程序的项目,Applescript似乎是最好的方法.我一直在使用Appscript框架,该框架运行良好,因为它允许我编写线程,而不是在Applescript需要一段时间时让我的应用程序锁定.但是,现在我试图使我的应用程序64位兼容,似乎Appscript框架不支持64位.是否有一种"好"的方式在Cocoa中使用Applescript不会锁定我的应用程序,但仍然给我完全控制我需要的?
--firen
它似乎SBApplication
应该工作,但我以前没用过它.
根据@cocoadevcentral:
SBApplication:用于使用Objective-C而不是AppleScript进行跨应用程序脚本调用.例如:获取当前的iTunes曲目.
以下是文档的摘录:
SBApplication类提供了一种机制,使Objective-C程序能够将Apple事件发送到可编写脚本的应用程序,并接收Apple事件作为响应.因此,该程序可以控制应用程序并与之交换数据.Scripting Bridge通过在Apple事件描述符和Cocoa对象之间桥接数据类型来工作.
虽然SBApplication包含手动发送和处理Apple事件的方法,但您永远不必直接调用这些方法.相反,SBApplication的子类实现了特定于应用程序的方法,可以自动处理Apple事件的发送.
例如,如果你想获得当前的iTunes曲目,你可以简单地使用iTunes应用程序的动态定义子类的currentTrack方法 - 它处理为你发送Apple事件的细节 - 而不是找出更复杂的,低级替代方案:
[iTunes propertyWithCode:'pTrk'];如果确实需要手动发送Apple事件,请考虑使用NSAppleEventDescriptor类.
希望有所帮助!