如何在 C# 中检索 URL 协议请求

How Do I retrieve a URL Protocol Request in C#

我有一个 Windows WPF 应用程序 运行ning 一直在后台运行。我已经在名为 WTL: 的应用程序中注册了一个 URL 协议。该协议在应用程序关闭时有效,但当应用程序打开或在后台 运行ning 时我如何响应它?我有使用 WinXP 的客户,因此 Win8 中的新协议处理还不够。

我认为 OnNavigated 或 OnActivated 可能有效,但协议不适用于这些。我应该 运行 一直听协议的东西吗?帮助。

谢谢!

好的 - 我不得不读了两遍,但现在我想我明白你的意思了。我有过类似的任务,不是在 WPF 中,而是在 WinForms 中...(在那种情况下几乎相同)。
我不知道 "WTL" 到底做了什么,因为我在应用程序启动时手动注册了自己的协议。

您可以通过打开注册表编辑器并转到 HKEY_CLASSES_ROOT
查看当前设置 在下面你可以找到你的 "protocol"(不知道你的,所以例如我选择 "callto://") 浏览到命令子键 HKEY_CLASSES_ROOT\callto\shell\open\command - 默认入口指向您的应用程序。该值必须类似于:
"path_to_your_application.exe" "%1" (包括双引号!)

重要的是 "%1"

此值表示您的应用程序实例的参数。 在 .net 中读取命令行参数并不是真正复杂的任务。 但是如果你只允许一个实例,它会变得有点棘手!

对我来说,最佳方法 用于单实例应用程序并获得这些
"second instance-commandline-args" 可在以下位置找到:
Codeproject: WPF Single Instance Application

长话短说:对您的应用程序的请求可能如下所示: "callto://008291478624599" 其中数字将填入您的第 2 个应用程序启动请求 (%1) 的 args