2017-03-14 114 views
1

我已经在注册表中设置了一个协议处理程序,一切工作正常。我可以使用该协议并将单个参数发送到C#控制台应用程序,非常棒。协议处理程序与多个参数

但是我不能做的事情是让C#应用程序将协议数据解释为多个参数。我试过以下,但有没有运气:

协议链接,MyProtocol = “C:\ test.exe的” “%1”, “2%”

呼叫= MyProtocol:// 1 2

但是我得到的只有一个参数1和空格字符2,我需要的是发送多个参数,这会让我的生活更轻松。

如果我不得不解释一个参数,那很好,但它不是最好的方式。

回答

1

你需要自己解析它,协议处理程序定义了一个uri,它没有关于如何向其链接的可执行文件传递多个参数的固有知识,所以你可以获得args[0](包括protocolname:) 。

明显的格式是MyProtocol://doathing/1/2

,您可以解析:

var uri = new Uri("MyProtocol://doAthing/1/2", UriKind.Absolute); 
if (uri.Scheme == "myprotocol") { 
    if (uri.Authority == "doathing") { 
     var argsArray = uri.PathAndQuery.Split(new [] {'/'}, StringSplitOptions.RemoveEmptyEntries); 
     //... 
    } 
} 

或实现自己的UriParser子类。