如何将数据从Mac Automator传递到Xamarin.Mac C#应用程序?

时间:2015-07-29 09:30:13

标签: c# xcode macos automator xamarin.mac

我是osx和xamarin开发的新手。我开发了一个应用程序,在C#中使用Xamarin.Mac在给定文件夹上做一些事情。 我使用Automator Service将此应用程序添加到Finder中右键单击文件夹菜单。 如何将右键单击的文件夹的名称传递给Xamarin应用程序?如果这不可能如何在XCode中将文件/文件夹浏览按钮添加到我的应用程序? 提前致谢

1 个答案:

答案 0 :(得分:0)

在Automator中,您可以使用“运行Shell脚本”操作,并使用与您通过cmd行手动启动它时相同的参数打开XamMac应用程序。

这将是“Run Shell Script”作为“Automator Service”:

for f in "$@"
do
    myArgs+="\""${f}"\""" "
done
echo "${myArgs}"
/Applications/XamMacStartupArgs.app/Contents/MacOS/XamMacStartupArgs "${myArgs}" &

在你的XamMac应用程序中,Main会收到传入的args,你当然会对它们做些什么:

static class MainClass
{
    static void Main (string[] args)
    {
        Console.WriteLine (args[0]);
        NSApplication.Init ();
        NSApplication.Main (args);
    }
}

注意:如果您需要将“参数”传递给正在运行的XamMac应用程序,则需要挂钩打开并重新打开Apple事件处理程序并以这种方式处理它们:

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ScriptableCocoaApplications/SApps_handle_AEs/SAppsHandleAEs.html