【问题标题】:MonoMac - how can I execute apple scriptMonoMac - 我如何执行苹果脚本
【发布时间】:2011-08-18 01:32:21
【问题描述】:

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

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

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

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

未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“MonoMac,版本=0.0.0.0,文化=中性,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 

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

【问题讨论】:

    标签: objective-c mono applescript monomac monobjc


    【解决方案1】:

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

    实现应用程序间通信的最简单方法是使用 ScriptingBridge 框架。许多应用程序提供脚本定义,然后可以以面向对象的方式使用:take a look at this guide 了解更多详细信息。

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

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

    【讨论】:

    • 如何检查应用程序是否启用了脚本功能?检查苹果脚本编辑器中的函数浏览器?
    • 有两种方法:(1)在Apple Script Editor中,选择File > Open Dictionary;该应用程序应列出或 (2) 在终端提示符中,键入“sdef /Applications/.app”;如果出现错误,则应用程序不可编写脚本。
    【解决方案2】:

    如果可能,请尝试使用 Monobjc。 Monobjc 提供了一种非常直接的方式来执行自定义 AppleScript。

    以下代码 sn -p 显示了主要步骤:

    string script = ". . . . . . . . . ."; // some applescript text
    NSDictionary error = null;
    NSAppleScript scr = new NSAppleScript(script);
    NSAppleEventDescriptor result = scr.ExecuteAndReturnError(out error);
    string retval = result.StringValue;
    

    我已经写了一个blog post 解释相同。还提供了一个示例 Monobjc 项目。

    【讨论】:

    • 这真是太好了,我一有空就试试这个:)
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多