2008-08-01 42 views
30

如何使它成为mailto:链接将被注册到我的程序中?通过编程注册Windows程序与mailto协议

我会如何处理我的程序中的事件?

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

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

回答

18

@ Dillie-O:你的回答让我在正确的方向(我应该期望它只是一个注册表更改)我得到了这个工作。但是我将把这个标记为答案,因为我将在工作时发现一些额外的信息。

只要有一些方法可以修改Windows注册表设置,此问题的解决方案与您使用的编程语言无关。

最后,这里的答案:

  • 把一个程序和mailto协议为所有用户的计算机上的关联,改变HKEY_CLASSES_ROOT \邮寄地址\ \打开\命令默认值外壳:
    你的程序的可执行” “%1”
  • associate a program with the mailto protocol for the current user,改变HKEY_CURRENT_USER \ Software \ Classes下\邮寄地址\ \打开\命令默认值外壳:
    你的程序的可执行“ ”%1“

%1将与整个的mailto URL来代替。例如,给定的链接:

<a href="mailto:[email protected]">Email me</a> 

以下将被执行:
你的程序的可执行” “电子邮件地址:[email protected]

更新(通过由shellscape评论):
从Windows 8开始,此方法不再按预期工作。 Win8强制执行以下项:HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associati ons \ URLAssociations \ MAILTO \ UserChoice所选应用程序的ProgID被散列且不能被伪造。这是一个皇家PITA

+0

您是否检查过现在您是否可以将此标记为*答案?我不知道最低声誉要求。 – tzot 2010-06-30 21:55:49

12

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

系统的关键:[HKEY_CLASSES_ROOT\mailto\shell\open\command]

值名称:(Default)

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

值数据:Mail program command-line

我不熟悉Delphi 7,但我确定有一些注册表编辑库在那里,你可以用它来修改这个值。

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

4

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

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

+0

从您的链接:“这是从默认的Web浏览器或电子邮件客户端,用于从系统中的任何位置启动任意URL的独立。” 这也是我想知道的另一件事,但不是真正的这个问题的答案。 – 2008-11-01 16:26:35

相关问题