首页 > 解决方案 > 如何在 Windows 10 中创建可以处理 URL:callto 和 URL:tel 协议的 WPF 应用程序?

问题描述

我的任务是创建一个 WPF 应用程序,当用户在浏览器(Chome、IE)中单击 callto: 和 tel: 链接时,打开它们的默认应用程序是我创建并处理它们的 Windows 10 WPF 应用程序。

我尝试通过编写脚本并手动输入 Visual Studio 输出的已发布 .exe 的路径来更改注册表,但这些都不起作用,每当我单击 callto: 或 tel: 链接时,打开的默认程序是仍然是 Skype 等 voip 应用程序。

我已将[HKEY_CLASSES_ROOT\tel\shell\open\command]and更改Computer\HKEY_CLASSES_ROOT\callto\shell\open\command"C:\App\bin\Release\app.publish\App.exe" -c "call\%1"(这是我程序的 .exe)

我希望浏览器会提示我打开应用程序。

标签: c#wpfwindows-10protocols

解决方案


你读过这个页面吗,它解释了如何注册为快捷方式的消费者。

要注册应用程序以处理特定的 URI 方案,请将新键以及相应的子键和值添加到 HKEY_CLASSES_ROOT。根密钥必须与正在添加的 URI 方案相匹配。例如,要添加“alert:”方案,请向 HKEY_CLASSES_ROOT 添加一个警报键,如下所示:

HKEY_CLASSES_ROOT
    alert
        URL Protocol = ""

在这个新键下,URL 协议字符串值表明这个键声明了一个自定义的可插入协议处理程序。如果没有这个键,处理程序应用程序将不会启动。该值应该是一个空字符串。

还应该为 DefaultIcon 和 shell 添加键。DefaultIcon 键的默认字符串值必须是用作此新 URI 方案的图标的文件名。该字符串采用“路径,图标索引”的形式,最大长度为 MAX_PATH。shell键下的第一个键名应该是动作动词,比如open。在此键下,命令键或 DDEEXEC 键指示应如何调用处理程序。command 和 DDEEXEC 键下的值描述了如何启动处理新协议的应用程序。

最后,默认字符串值应包含新 URI 方案的显示名称。以下示例显示了如何注册应用程序(在这种情况下为 alert.exe)来处理警报方案。

HKEY_CLASSES_ROOT
 alert
    (Default) = "URL:Alert Protocol"
      URL Protocol = ""
    DefaultIcon
      (Default) = "alert.exe,1"
    shell
      open
         command
            (Default) = "C:\Program Files\Alert\alert.exe" "%1"

当用户单击包含您的自定义 URI 方案的链接时,Windows Internet Explorer 会启动为该 URI 方案注册的可插入协议处理程序。如果在注册表中指定的指定打开命令包含 %1 参数,Internet Explorer 会将 URI 传递给已注册的可插入协议处理程序应用程序。


推荐阅读