7

Ruby-Tk を使用して OS X 用のデスクトップ アプリケーションに取り組んでおり、アプリケーションに Apple Events インターフェイスを提供したいと考えています。これは、アプリケーションが応答する AppleScript コマンドのディクショナリを定義し (アプリケーションに送信される Apple イベントに対応)、ユーザー/他のアプリケーションが AppleScript コマンドを使用して Ruby-Tk アプリケーションをスクリプト化できることを意味します。他のスクリプト言語は、このような機能をサポートしています。http://appscript.svn.sourceforge.net/viewvc/appscript/py-aemreceive/ の py-aemreceive ライブラリを介した Pythonと、 http ://tclae.sourceforgeの tclAE ライブラリを介した Tclです。 .net/ . 私はRubyで同様の機能を探していましたが、空になりました。

考えられるメカニズムの 1 つは、Ruby と Objective-C の間の低レベルのインターフェースを提供する ruby​​objc ブリッジですが、この gem はほとんど使用されていないようで、例やドキュメントが非常に不足しているため、これが追求する実りある道。

注: MacRuby は動作する可能性がありますが、Tk と互換性がないため、MacRuby は除外されます。また、RubyOSA と rb-appscript は私が探しているものではありません。Ruby が Apple Events を受信するのではなく、他のアプリケーションに送信できるようにします。

4

2 に答える 2

1

appscriptライブラリ (注: OS X が提供する Ruby でのみ動作するようです)を確認するか、MacRubyを使用してみてください。MacRuby は、OS Xで利用可能なほとんどすべての API (C API を含む) をラップします。

于 2011-11-18T14:16:42.620 に答える
1

他に代替手段がない場合、AppleEvent C API の必要な部分 (主に AEInstallEventHandler と関連関数) 用に独自の Ruby ラッパーを作成する必要があるようです。幸いなことに、Apple はこの API をまだサポートしていますが、Apple の開発者向けドキュメントでは「レガシー」ステータスに追いやられています (ただし、興味深いことに、非推奨ではありません)。これらの関数は、Ruby の ffi gem を介して統合するか、Ruby の C API を介して統合します (これについてはまだ掘り下げる必要があります)。C API を直接使用すると、他の gem/モジュールへの依存関係の必要性が減ります。これがうまくいけばgemとしてリリースします。

Donal Fellows のコメントに関しては、カスタム AppleEvents が必要です。彼が推奨するドキュメントで Tk を介してサポートされているものは、Ruby の Tk インターフェイスから Tk を呼び出すことでアクセスできる可能性があります。

于 2011-09-21T14:27:47.993 に答える