2008-08-01 98 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

相關問題