【发布时间】:2015-08-15 11:07:46
【问题描述】:
我一直在后台运行一个 Windows WPF 应用程序。我已经在名为 WTL: 的应用程序中注册了一个 URL 协议。该协议在应用程序关闭时起作用,但是当应用程序打开或在后台运行时我该如何响应?我有使用 WinXP 的客户端,所以 Win8 中的新协议处理是不够的。
我认为 OnNavigated 或 OnActivated 可能有效,但协议不适用于这些。我应该运行一些总是在听协议的东西吗?帮助。
谢谢!
【问题讨论】:
我一直在后台运行一个 Windows WPF 应用程序。我已经在名为 WTL: 的应用程序中注册了一个 URL 协议。该协议在应用程序关闭时起作用,但是当应用程序打开或在后台运行时我该如何响应?我有使用 WinXP 的客户端,所以 Win8 中的新协议处理是不够的。
我认为 OnNavigated 或 OnActivated 可能有效,但协议不适用于这些。我应该运行一些总是在听协议的东西吗?帮助。
谢谢!
【问题讨论】:
好的——我不得不读了两遍,但现在我想我明白你的意思了。我有过类似的任务,不是使用 WPF,而是使用 WinForms...(在那种情况下几乎相同)。
我不知道“WTL”到底是做什么的,因为我在应用程序启动时手动注册了自己的协议。
您可以通过打开注册表编辑器并转到 HKEY_CLASSES_ROOT
查看当前设置
在下面你可以找到你的“协议”(不知道你的,所以例如我拿“callto://”)
浏览到命令子键 HKEY_CLASSES_ROOT\callto\shell\open\command - 默认入口指向您的应用程序。该值必须类似于:
"path_to_your_application.exe" "%1" (包括双引号!)
重要的是“%1”
此值表示您的应用程序实例的参数。 在 .net 中读取命令行参数并不是一项复杂的任务。 但是,如果您只允许一个实例,它就会变得有点棘手!
对我来说,单实例应用程序的最佳方法和获取这些
“第二个实例命令行参数”可以在以下位置找到:
Codeproject: WPF Single Instance Application
长话短说:对您的应用程序的请求可能如下所示: "callto://008291478624599" 其中数字将填写在您的第二个应用程序启动请求(%1)的参数中
【讨论】: