如何从 URL 调用中捕获参数

How to catch parameters from URL call

我有一个依赖于自定义 URL 协议调用的应用程序;有关参考,请参阅 this post。注册表 link 有效,但是当我尝试从 URL 捕获传递的参数时(例如,我在浏览器中启动 customurl://param1=xy&param2=xy )我似乎用下面的代码失败了;

Program.cs

static void Main(string[] args) {
    [...]
    Application.Run(new Form1(args));
} 

Form1.cs

public Form1(string[] args) {
    [...]
    if (args.Length > 0) {
        string name = args[0];
        label1.Text = "received paramter: " + name;
    } else {
        label1.Text = "no received parameter!";
    }
}

条件总是选择else分支,也就是说args[]数组包含了none个传递的参数。我究竟做错了什么?在给定这些条件的情况下,是否有另一种特定方法来捕获参数?

您观察到的行为可能是由于忘记了注册表中的 "%1" 造成的。 "%1" 是 URL 的占位符。如果您忘记包含它,URL 将不会传递给您的处理程序。

这是另一个具有类似说明的 SE post How do I register a custom URL protocol in Windows? 它向您准确显示了您需要放置 "%1".

的位置