C#从URL启动应用程序并获取数据

时间:2015-09-07 19:32:18

标签: c# macos xamarin url-scheme

我试图从网址启动我的C#应用​​程序(示例" myapp:// somestring")并且我已经能够做到这一点,但我仍然可以&#39 ;了解如何阅读" somestring"网址应传递给应用的值。

我尝试了以下代码,但没有:

static void Main (string[] args){

      foreach (string arg in args) {
            Console.Writeline(arg);
      }
}

要知道,应用程序正在使用xamarin for mac。

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:1)

有时您希望使用mailto:skype:等自定义网址来处理某些自定义链接。为此,您可以在注册表中register an application to a URI Scheme创建一个运行以处理对该URL方案的请求的应用程序。

实施例

I've created an example that demonstrate the feature.创建此示例以处理myapp: url方案并显示一个消息框,其中包含通过url传递给应用程序的值。

该示例包含2个项目:

  • 将安装并将在单击“myapp:”protocole链接时运行的Windows窗体应用程序。
  • 一个Visual Studio安装项目,它安装应用程序并设置注册设置,让Windows应用程序处理“myapp:”protocole。

它是如何工作的?

我想您要创建myapp url方案并在c:\myapp.exe中设置一个应用程序,您希望在应用程序中处理url方案。然后,您应该在registry / l

中创建这些键和值
HKEY_CLASSES_ROOT
   myapp
      (Default) = "URL:myapp"
      URL Protocol = ""
  DefaultIcon
     (Default) = "c:\myapp.exe",0
  shell
     open
        command
           (Default) = "c:\myapp.exe" "%1"

然后,您可以使用Environment.GetCommandLineArgs()通过URL获取传递给应用程序的值并解析参数。

例如,有一个url myapp:Hello world!,你的应用程序的命令行参数将是myapp:Hello world!,你可以解析它并从参数中提取你需要的信息。

就像一个例子,你可以有这样的网址:myapp:show?form=form1&param1=something。然后你可以解析命令并做你需要的。

常见问题

<强> 1。 Windows窗体应用程序在此项目中的作用是什么?
当用户单击注册方案的URL时,应用程序将打开,并且URL将作为命令行参数传递给应用程序。然后你可以解析参数并做你需要的。

<强> 2。安装项目的作用是什么?

它安装处理url方案的应用程序。它还在Windows注册表中使用合适的值注册url方案 您也可以使用C#代码创建这些注册表项和值,而不是使用安装程序项目,但使用安装程序项目更方便。如果您没有Visual Studio 2017安装项目模板,则可以下载here