以编程方式向mailto协议注册Windows程序

Translate

我怎么做mailto:链接会在我的程序中注册吗?

我该如何在程序中处理该事件?

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

编辑:

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

This question and all comments follow the "Attribution Required."

所有的回答

Translate

@ 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 \ Associati‌ons \ URLAssociations \ MAILTO \ UserChoice所选应用程序的ProgID被散列且无法伪造。这是皇家的皮塔饼

来源
Translate

从我所看到的,有几个注册表项可以设置默认的邮件客户端。其中之一是:

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

值名称:(Default)

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

值数据:Mail program command-line.

我不熟悉Delphi 7,但我肯定有一些注册表编辑库在那里您可以用来修改此值。

有些地方列出了更多,其他人只是这个密钥,因此您可能需要进行一些测试才能找到合适的密钥。

来源
Translate

这是官方的Microsoft解决方案,以编程方式更改默认邮件客户端。它是Visual Basic,但我希望从中可以清楚这一概念:

http://support.microsoft.com/kb/299853

来源