web-dev-qa-db-ja.com

特定のファイルタイプのみのメニュー項目をWindowsコンテキストメニューに追加する

ウィンドウのコンテキストメニュー(ファイルを右クリック)を使用して画像を読み込むアプリケーションを開発しましたが、現時点では動作していますが、regキーがオンになっています

HKEY_CLASSES_ROOT\*

そして、それはすべてのファイルで動作します。

コンテキストメニューのメニュー項目は.jpgファイルでのみ表示されるようにします。

どうすればそれができますか?どのレジストリキーを使用する必要がありますか?

前もって感謝します。

40
Sein Kraft

1).jpgファイルのファイルタイプ(ProgID)を特定します

これは、HKEY_CLASSES_ROOT\.jpgのデフォルト値を確認することで実行できます。インストールしたものに基づいたものであれば何でもかまいませんが、この例の目的のために、一般的なデフォルトであるjpegfileと呼びます。

2)そのファイルタイプのコンテキストメニュー項目(動詞)プロパティを設定します

HKEY_CURRENT_USER\Software\Classes\jpegfile\Shellでユーザーごとのコンテキストメニュー項目を設定できます。このキーには、ファイルタイプの動詞のリストがあります。 HKEY_LOCAL_MACHINE\Software\Classes\jpegfile\Shellにも同様のキーがあり、これらはファイルタイプのシステムデフォルトです。そこに動詞キーを置くこともできますが、同じキーがHKCUに存在する場合、オーバーライドされますので、ご注意ください。

3)コマンド値を設定する

動作させるために設定する必要がある最低限のキー値は、commandサブキーのデフォルト値です。次のように、アプリケーションへのパスで設定する必要があります:HKEY_CURRENT_USER\Software\Classes\jpegfile\Shell\open_with_myapp\command"c:\path\to\myapp.exe" "%1"に設定されます。 .jpgファイルのコンテキストメニューには、「open_with_myapp」アイテムがあり、クリックするとアプリが起動し、選択したファイルのファイル名がパラメーターとして渡されます。もちろん、アプリケーションがパラメーターを処理する方法はユーザー次第であるため、パラメーター文字列をアプリが処理できるものに設定する必要があります。

4)他の動詞のプロパティを設定します

おそらく、コンテキストメニュー項目に、キー名よりも少しわかりやすいものを読み取らせたいと思うでしょう。そのキーのデフォルト値(open_with_myapp)を設定することで、コンテキストメニューにアイテムのラベルを表示できます。

これが基本的な概要です。ファイルの関連付けに関するこの質問に対する私の答えを間違いなくチェックしてください。同様の答えがあります。

80
Factor Mystic

レジストリには、ユーザーのデフォルトプログラムとは独立して動作する別のキーがあります:HKEY_CLASSES_ROOT\SystemFileAssociations。この質問で誰も言及していないので...コンテキストメニュー項目を追加する前にProgIDを確認する必要はありません。例:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SystemFileAssociations\.mkv\Shell\subtitle]
@="Search subtitles..."

[HKEY_CLASSES_ROOT\SystemFileAssociations\.mkv\Shell\subtitle\command]
@="\"D:\\Tools\\subsearch.exe\" \"%1\""

リファレンス: https://docs.Microsoft.com/en-us/windows/desktop/Shell/app-registration#registering-verbs-and-other-file-association-information

15
andromeda947