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

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

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

编辑:

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

===============>>#1 票数:18 已采纳

@ 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经过哈希处理且无法伪造。 这是一个皇家PITA

===============>>#2 票数:12

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

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

值名称:( (Default)

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

值数据: Mail program command-line

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

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

===============>>#3 票数:4

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

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

  ask by Liron Yahdav translate from so

未解决问题?本站智能推荐: