以编程方式向mailto协议注册Windows程序
如何使" mailto:"链接在我的程序中注册?
我该如何在程序中处理该事件?
我从Google的快速搜索中发现的大多数## 解决方案都是手动执行此操作,但是如果我的程序用户单击"设置为默认电子邮件客户端"之类的按钮,则需要为他们自动执行此操作。
编辑:删除了对Delphi的引用,因为答案与语言无关。
解决方案:
从我所看到的来看,有一些注册表项可以设置默认邮件客户端。其中之一是:
系统密钥:[HKEY_CLASSES_ROOT \ mailto \ shell \ open \ command]
值名称:(默认)
数据类型:REG_SZ
(字符串值)
值数据:"邮件程序命令行"。
我不熟悉Delphi 7
,但是我确定其中有一些注册表编辑库,我们可以用来修改该值。
有些地方列出的内容比该钥匙还要多,而其他地方仅仅是此钥匙,因此我们可能需要进行一些测试才能找到合适的钥匙。
这是官方的Microsoft## 解决方案,以编程方式更改默认邮件客户端。它是Visual Basic,但我希望从中可以清楚这一概念:
http://support.microsoft.com/kb/299853
@ Dillie-O:回答使我朝了正确的方向(我应该期望这只是注册表更改),而我的工作正常。但是,我将其标记为答案,因为我将添加一些在处理此问题时发现的其他信息。
只要有某种方法可以修改Windows注册表设置,此问题的## 解决方案实际上与我们使用哪种编程语言都没有关系。
最后,这是答案:
要将程序与计算机上所有用户的mailto协议相关联,请将HKEY_CLASSES_ROOT \ mailto \ shell \ open \ command的默认值更改为:"程序的可执行文件""%1"要将程序与当前的mailto协议相关联用户,将HKEY_CURRENT_USER \ Software \ Classes \ mailto \ shell \ open \ command更改为默认值:"程序的可执行文件""%1"
%1将替换为整个mailto URL。例如,给定链接:
<a href="mailto:[email protected]">Email me</a>
将执行以下操作:
"程序的可执行文件"" mailto:[email protected]"
更新(通过shellscape评论):
从Windows 8开始,此方法不再按预期工作。 Win8强制执行以下键:HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associations \ URLAssociations \ ?? MAILTO \ UserChoice所选应用程序的ProgID被散列且无法伪造。这是皇家的皮塔饼