41

如何使mailto:链接注册到我的程序中?

然后我将如何在我的程序中处理该事件?

我从快速谷歌搜索中找到的大多数解决方案都是如何手动执行此操作,但如果我的程序用户单击一个按钮,我需要为他们自动执行此操作,例如“设置为默认电子邮件客户端”。

#Edit:删除了对 Delphi 的引用,因为答案与您的语言无关。

4

2 回答 2

19

@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:user@example.com">Email me</a>

将执行以下内容:
您的程序的可执行文件”“mailto:user@example.com”

更新(通过 shellscape 的评论):
从 Windows 8 开始,此方法不再按预期工作。Win8 强制执行以下密钥:HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associati‌​ons\URLAssociations\‌​MAILTO\UserChoice,所选应用程序的 ProgID 已对其进行哈希处理且无法伪造。这是皇家皮塔饼。

于 2008-08-05T01:49:25.940 回答
13

据我所见,有一些注册表项可以设置默认邮件客户端。其中之一是:

系统密钥:[HKEY_CLASSES_ROOT\mailto\shell\open\command]

值名称:(Default)

数据类型:(REG_SZ字符串值)

价值数据:Mail program command-line

我不熟悉Delphi 7,但我确信那里有一些注册表编辑库可用于修改此值。

有些地方列出的不仅仅是这个,其他地方只是这个键,所以你可能需要稍微测试一下才能找到合适的。

于 2008-08-01T22:12:30.170 回答