具有多个参数的协议处理程序

我已经在registry中设置了一个协议处理程序,一切正常。 我可以使用该协议,并发送一个单一的参数到一个C#控制台应用程序,很好。

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

Protocol Link for MyProtocol =“C:\ test.exe”“%1”“%2”

Call = MyProtocol:// 1 2

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

如果我只需要解释一个参数,那么它就不是最好的方法。

你需要自己解析这个,协议处理程序定义了一个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子类。