Ruby是否提供了在OS X上响应Apple事件的机制?

7
我正在使用Ruby-Tk为OS X开发桌面应用程序,并希望为该应用程序提供Apple Events接口。这意味着应用程序将定义一个苹果脚本命令字典,用来响应发送到应用程序的Apple Events,用户/其他应用程序可以使用苹果脚本命令来脚本化Ruby-Tk应用程序。其他脚本语言支持此类功能--Python通过py-aemreceive库http://appscript.svn.sourceforge.net/viewvc/appscript/py-aemreceive/和Tcl通过tclAE库http://tclae.sourceforge.net/。我一直在寻找Ruby中的类似功能,但没有结果。
可能的机制之一是rubyobjc桥接器,它提供了Ruby和Objective-C之间的低级接口,但这种宝石似乎很少使用,并且缺乏示例和文档,因此我不确定是否应该追求这条途径。
注:MacRuby可能有效,但与Tk不兼容,因此排除了MacRuby。另外,RubyOSA和rb-appscript不符合我的要求--它们允许Ruby向其他应用程序发送Apple Events,而不是接收它们。

一般的AE或由Tk通过http://www.tcl.tk/man/tcl8.6/TkCmd/tk_mac.htm上描述的(Tcl)API支持的AE。 - Donal Fellows
2个回答

1
在没有其他选择的情况下,我似乎不得不编写自己的Ruby包装器来处理我需要的AppleEvent C API部分,主要是AEInstallEventHandler和相关函数。幸运的是,即使已经被归类为“遗留”,Apple仍然支持此API(尽管有趣的是,它并没有被弃用)。我将通过Ruby的ffi gem或更可能的是通过Ruby的C API(我还需要深入挖掘)集成这些功能;直接使用C API将减少对其他gem/模块的依赖。如果进展顺利,我将将其发布为一个gem。
关于Donal Fellows的评论,我的需求是定制的AppleEvents——他推荐的文档中通过Tk支持的那些事件很可能可以通过从Ruby的Tk界面调用Tk来访问。

1
你可能想要检查一下appscript库(注意:似乎只能与OS X提供的Ruby一起使用),或者尝试使用MacRuby,它包装了几乎所有可用于OS X的API,甚至是C语言的API。

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