我怎样才能做到这样 mailto: 链接将在我的程序中注册吗?

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

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

编辑:

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

有帮助吗?

解决方案

@迪莉-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 已进行哈希处理且无法伪造。这是皇家皮塔饼

其他提示

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

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

值名称: (Default)

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

数值数据: Mail program command-line.

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

有些地方列出的不止这个 钥匙, ,其他的只是这个键,所以您可能需要进行一些测试才能找到合适的键。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top