如何使mailto:
链接与我的程序关联?
接下来,我该如何在程序中处理这个事件?
我从快速谷歌搜索中找到的大部分解决方案都是手动完成的。但如果用户单击“设置为默认电子邮件客户端”等按钮,则我需要自动完成此操作。
#编辑:由于答案与您使用的编程语言无关,请删除对Delphi的参考。
如何使mailto:
链接与我的程序关联?
接下来,我该如何在程序中处理这个事件?
我从快速谷歌搜索中找到的大部分解决方案都是手动完成的。但如果用户单击“设置为默认电子邮件客户端”等按钮,则我需要自动完成此操作。
#编辑:由于答案与您使用的编程语言无关,请删除对Delphi的参考。
@Dillie-O:你的回答让我找到了正确的方向(我应该预料到只需要更改注册表),我已经解决了这个问题。但我会把这个回答标记为最佳答案,因为我将在此基础上添加一些额外的信息。
这个问题的解决方案不取决于使用什么编程语言,只要有一种方法可以修改Windows注册表设置即可。
最后,以下是答案:
%1将被替换为整个mailto URL。例如,给出以下链接:
<a href="mailto:user@example.com">Email me</a>
以下内容将会被执行:
"你程序的可执行文件" "mailto:user@example.com"
更新(通过shellscape的评论):
自Windows 8起,此方法不再按预期工作。Win8强制执行以下密钥:HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\MAILTO\UserChoice,而所选应用程序的ProgID已被散列化,无法被伪造。这是一个巨大的麻烦。
根据我所了解的,有几个注册表键可以设置默认邮件客户端。其中之一是:
系统键:[HKEY_CLASSES_ROOT\mailto\shell\open\command]
值名称:(Default)
数据类型:REG_SZ
(字符串值)
值数据:邮件程序命令行
。
我不熟悉 Delphi 7
,但我确信它们有一些注册表编辑库可用于修改此值。
一些地方列出的内容比这个键更多,而其他地方只是这个键,因此您可能需要进行一些测试以找到适当的键。