41

mailto:リンクが私のプログラムに登録されるようにするにはどうすればよいですか?

次に、プログラムでそのイベントをどのように処理しますか?

Googleのクイック検索で見つけた解決策のほとんどは、これを手動で行う方法ですが、プログラムのユーザーが「デフォルトのメールクライアントとして設定」などのボタンをクリックすると、これを自動的に行う必要があります。

#Edit:答えはあなたの言語に依存しないため、Delphiへの参照を削除しました。

4

2 に答える 2

19

@Dillie-O:あなたの答えは私を正しい方向に導きました(私はそれが単なるレジストリの変更であると予想していたはずです)そして私はこれを機能させました。ただし、これに取り組んでいるときに見つけた追加情報を追加するため、これを回答としてマークします。

この質問の解決策は、Windows レジストリ設定を変更する方法がある限り、使用しているプログラミング言語に依存しません。

最後に、答えは次のとおりです。

  • プログラムをコンピューター上のすべてのユーザーの mailto プロトコルに関連付けるには、HKEY_CLASSES_ROOT\mailto\shell\open\command の既定値を次のように変更します:
    " Your program's executable " "%1"
  • プログラムを現在のユーザーの mailto プロトコルに関連付けるには、HKEY_CURRENT_USER\Software\Classes\mailto\shell\open\command のデフォルト値を次のように変更します:
    " Your program's executable " "%1"

%1 は mailto URL 全体に置き換えられます。たとえば、次のリンクがあるとします。

<a href="mailto:user@example.com">Email me</a>

以下が実行されます:
"あなたのプログラムの実行ファイル" "mailto:user@example.com"

更新 (shellscape によるコメント経由):
Windows 8 の時点で、このメソッドは期待どおりに機能しなくなりました。Win8 では、選択したアプリの ProgID がハッシュされ、偽造できない HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\\MAILTO\UserChoice というキーが適用されます。王道のピタです。

于 2008-08-05T01:49:25.940 に答える
13

私が見てきたことから、デフォルトのメールクライアントを設定するいくつかのレジストリキーがあります。それらの1つは次のとおりです。

システムキー:[HKEY_CLASSES_ROOT\mailto\shell\open\command]

値の名前:(Default)

データ型:(REG_SZ文字列値)

値データ:Mail program command-line

私はよく知らないが、この値を変更するために使用できるレジストリ編集ライブラリDelphi 7がいくつかあると確信している。

このキーよりも多くリストされている場所もあれば、このキーだけがリストされている場所もあるため、適切なキーを見つけるために少しテストする必要がある場合があります。

于 2008-08-01T22:12:30.170 に答える