我有一个依赖于由自定义 URL 协议(protocol)调用的应用程序;引用见this post 。注册表链接有效,但是当我尝试从 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[]
数组不包含任何传递的参数。我究竟做错了什么?在给定这些条件的情况下,是否有另一种特定方法来捕获参数?
最佳答案
您观察到的行为可能是由于忘记注册表中的“%1”
造成的。 “%1”
是 URL 的占位符。如果您忘记包含它,该 URL 将不会传递给您的处理程序。
这是另一篇具有类似说明的 SE 帖子 How do I register a custom URL protocol in Windows?它准确地向您显示了需要放置 "%1"
的位置。
关于c# - 如何从 URL 调用中捕获参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69740270/