簡體   English   中英

MonoMac - 我如何執行蘋果腳本

[英]MonoMac - how can I execute apple script

我正在嘗試使用 MonoMac 創建一個簡單的應用程序,並且需要執行蘋果腳本來訪問來自不同媒體播放器的播放列表信息(請參閱我之前的問題)。

我決定嘗試 MonoMac,因為我非常熟悉 C# 和 .net 開發,並且有一個不錯的 Websocket 實現。

不幸的是,似乎沒有適用於 NSAppleScript 的包裝器。 我嘗試了Frederic Forjans 的實現並嘗試使用monobjc

當我使用他的代碼時,Frederics 包裝器 class 甚至無法編譯我得到以下異常:

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 

誰能建議一種在 mono 環境中執行蘋果腳本的簡單且有效的方法?

如果不使用 Monobjc 運行時二進制文件運行它們,則不能直接使用 Monobjc 程序集。 無論您是想構建基於 Cocoa 的應用程序還是控制台應用程序,Monobjc 的網站上都有相應的教程來幫助您入門。

實現應用程序間通信的最簡單方法是使用 ScriptingBridge 框架。 許多應用程序提供腳本定義,然后可以以面向對象的方式使用: 請查看本指南以獲取更多詳細信息。

請注意,腳本橋僅適用於啟用腳本的應用程序(如 iTunes、iCal、iMovie、Finder 等)。

Monobjc 支持 ScriptingBridge 框架; 甚至還有兩個示例應用程序( SBSetFinderCommentScriptingBridgeiCal )展示了如何集成它。

如果可能,請嘗試使用 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 執行庫,名為 ZFF34154EAA67BCD7822D.F 0.00% 的代碼來自 Mono 開發項目。

AppleScript 超薄: https://applescriptslim.codeplex.com/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM