c# - 如何在 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)
我希望浏览器会提示我打开应用程序。
解决方案
你读过这个页面吗,它解释了如何注册为快捷方式的消费者。
要注册应用程序以处理特定的 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 传递给已注册的可插入协议处理程序应用程序。
推荐阅读
- hive - Hive count(1) 导致 oom
- amazon-web-services - 使用 AWS Chatbot 从松弛通道调用 AWS lambda 函数 - 自动化它,无需用户干预
- python - django 的“重定向”功能不起作用,提交表单后,用户仍然在同一页面上
- docker - 无法创建镜像/Dockerfile(Dockerfile)不能为空
- php - 如何显示该类别中的产品数量?在 laravel 中使用 Eloquent ORM
- reactjs - 如何在 Reactjs 中提交表单?(表格提交)
- omnet++ - 如何确定是否存在网络拥塞?或如何在 V2V 和 V2I 网络中造成拥塞?
- google-speech-to-text-api - Google Speech to Text API 填充词
- java - 将列表输出到文件
- automation - 仅当活动窗口为给定大小时,如何禁用热键?