Monomac- Appleスクリプトを実行するにはどうすればよいですか
-
28-10-2019 - |
質問
私はMonomacを使用してシンプルなアプリを作成しようとしています。さまざまなメディアプレーヤーからのプレイリスト情報にアクセスするためにAppleスクリプトを実行する必要があります(Myを参照してください 前の質問).
私はC#と.NETの開発に非常に精通しており、素晴らしいWebSocketの実装があるので、モノマックに試してみることにしました。
残念ながら、nsapplescriptの作業用ラッパーはないようです。私は試した Frederic Forjansの実装 使用しようとしました Monobjc.
Frederics Lapperクラスは、私が彼のコードを使用するときにコンパイルさえしません。次の例外が得られます。
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'MonoMac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. File name: 'MonoMac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
新しいを作成するとき NSString
実例。でも new NSDictionary();
同じアセンブリにあるものは正常に動作します。
MonoBJCを使用する場合、次のエラーが表示されます。
Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for Monobjc.ObjectiveCRuntime ---> System.EntryPointNotFoundException: monobjc_install_bridge at (wrapper managed-to-native) Monobjc.NativeMethods:InstallBridge () at Monobjc.ObjectiveCRuntime..cctor () [0x00000] in :0 --- End of inner exception stack trace --- at CocoaApplication1.Program.Main () [0x00000] in :0
モノ環境でAppleスクリプトを実行するためのシンプルで有効な方法を提案できますか?
解決
MonoBJCランタイムバイナリで実行せずにMonoBJCアセンブリを直接使用することはできません。ココアベースのアプリケーションを構築するかコンソールアプリケーションを構築するかどうかにかかわらず、 チュートリアルがあります そのために、MonobjcのWebサイトで、あなたが始めるのに役立ちます。
アプリケーション間通信を実現する最も簡単な方法は、ScriptingBridgeフレームワークを使用することです。多くのアプリケーションがスクリプト定義を提供し、その後、オブジェクト指向の方法で使用できます。 このガイドを見てください 詳細については。
スクリプトブリッジは、スクリプト対応のアプリケーション(iTunes、Ical、Imovie、Finderなど)でのみ動作することに注意してください。
MonoBJCは、ScriptingBridgeフレームワークをサポートしています。 2つのサンプルアプリケーションもあります(sbsetfindercomment と ScriptingBridgeical)それを統合する方法を示しています。
他のヒント
可能であれば、MonoBJCを使用してみてください。 MonoBJCは、カスタムApplescriptを実行する非常に簡単な方法を提供します。
次のコードスニペットには、主な手順が表示されます。
string script = ". . . . . . . . . ."; // some applescript text
NSDictionary error = null;
NSAppleScript scr = new NSAppleScript(script);
NSAppleEventDescriptor result = scr.ExecuteAndReturnError(out error);
string retval = result.StringValue;
私は書いた ブログ投稿 同じことを説明します。サンプルMonoBJCプロジェクトも提供されています。
私はWinforms MonoプロジェクトからApplescriptを実行しようとしていましたが、最終的にはApplescript Slimと呼ばれる独自のLittle Applescript実行ライブラリを構築することになりました。 !00%のコードは、Mono Developプロジェクトから来ました。
Applescriptスリム: https://applescriptslim.codeplex.com/