Windows プログラムをプログラム的に mailto プロトコルに登録する

StackOverflow https://stackoverflow.com/questions/231

  •  08-06-2019
  •  | 
  •  

質問

どうすればそうなりますか 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 はハッシュ化されており、偽造できません。ロイヤルピタです

他のヒント

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

システムキー: [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