3

我正在尝试使用 MonoMac 创建一个简单的应用程序,并且需要执行苹果脚本来访问来自不同媒体播放器的播放列表信息(请参阅我之前的问题)。

我决定尝试 MonoMac,因为我非常熟悉 C# 和 .net 开发,并且有一个不错的 Websocket 实现。

不幸的是,似乎没有适用于 NSAppleScript 的包装器。我尝试了Frederic Forjans 的实现并尝试使用monobjc

当我使用他的代码时,Frederics 包装器类甚至没有编译我得到以下异常:

未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“MonoMac,版本=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。
文件名:'MonoMac,版本=0.0.0.0,文化=中性,PublicKeyToken=null'

创建新NSString实例时。但是new NSDictionary();,位于同一个程序集中的工作正常。

使用 monobjc 时出现以下错误:

未处理的异常:System.TypeInitializationException:异常是
Monobjc.ObjectiveCRuntime 的类型初始值设定项抛出 --->
System.EntryPointNotFoundException:monobjc_install_bridge
  at (wrapper managed-to-native) Monobjc.NativeMethods:InstallBridge ()
  在 Monobjc.ObjectiveCRuntime..cctor () [0x00000] in :0
  --- 内部异常堆栈跟踪结束 ---
  在 CocoaApplication1.Program.Main () [0x00000] in :0

谁能建议一种在单声道环境中执行苹果脚本的简单有效的方法?

4

3 回答 3

4

如果不使用 Monobjc 运行时二进制文件运行它们,则不能直接使用 Monobjc 程序集。无论您想构建基于 Cocoa 的应用程序还是控制台应用程序, Monobjc 网站上都有相应的教程来帮助您入门。

实现应用程序间通信的最简单方法是使用 ScriptingBridge 框架。许多应用程序提供脚本定义,然后可以以面向对象的方式使用:请查看本指南以获取更多详细信息。

请注意,脚本桥仅适用于启用脚本的应用程序(如 iTunes、iCal、iMovie、Finder 等)。

Monobjc 支持 ScriptingBridge 框架;甚至还有两个示例应用程序(SBSetFinderCommentScriptingBridgeiCal)展示了如何集成它。

于 2011-05-04T11:15:36.507 回答
1

如果可能,请尝试使用 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 项目。

于 2012-03-10T11:48:19.233 回答
0

我试图从 WinForms Mono 项目中执行 AppleScript,最终构建了我自己的小型 AppleScript 执行库,称为 AppleScript Slim。!00% 的代码来自 Mono Develop 项目。

AppleScript Slim:https ://applescriptslim.codeplex.com/

于 2012-06-02T04:16:23.427 回答