如何创建可以在 Windows 10 中处理 URL:callto 和 URL:tel 协议的 WPF 应用程序?

ben*_*v88 5 c# wpf protocols windows-10

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

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

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

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

Nei*_*eil 4

您是否阅读过此页面,其中解释了如何注册为快捷方式的使用者。

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

HKEY_CLASSES_ROOT
    alert
        URL Protocol = ""
Run Code Online (Sandbox Code Playgroud)

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

还应该为 DefaultIcon 和 shell 添加键。DefaultIcon 键的默认字符串值必须是用作此新 URI 方案的图标的文件名。该字符串采用“path, iconindex”形式,最大长度为 MAX_PATH。shell 键下的第一个键的名称应该是动作动词,例如 open。在此键下,命令键或 DDEEXEC 键指示应如何调用处理程序。命令和 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"
Run Code Online (Sandbox Code Playgroud)

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