如何从 URL 调用中捕获参数
How to catch parameters from URL call
我有一个依赖于自定义 URL 协议调用的应用程序;有关参考,请参阅 this post。注册表 link 有效,但是当我尝试从 URL 捕获传递的参数时(例如,我在浏览器中启动 customurl://param1=xy¶m2=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"
.
的位置
我有一个依赖于自定义 URL 协议调用的应用程序;有关参考,请参阅 this post。注册表 link 有效,但是当我尝试从 URL 捕获传递的参数时(例如,我在浏览器中启动 customurl://param1=xy¶m2=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"
.