对于我正在编写的应用程序,我需要访问一些其他应用程序的项目,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 类。
希望有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)