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

本文关键字:Mac Xamarin 应用程序 Automator 数据 | 更新日期: 2023-09-27 18:05:13

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

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

在Automator中,您可以使用"Run Shell Script"操作并使用参数打开XamMac应用程序,就像您通过cmd行手动启动它一样。

这将是一个"运行Shell脚本"作为"自动化服务":

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

在您的XamMac应用程序中,Main将接收传入的这些参数,您当然会对它们进行处理:

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