Windows の右クリックメニューをカスケード表示し 1つにまとめる方法です。デスクトップを例にしますが、ほかのシェルメニューにも応用できます。
![cascade desktop menu](https://lh4.googleusercontent.com/-C2bvGazWH-8/U48a7gQOnSI/AAAAAAAAID4/wayPgdpQKi4/d/cascading-desktopbackground-menus.png)
デスクトップとフォルダーの背景にメニューが出ます。
HKEY_CURRENT_USER を使うため、アクセス権の変更は不要。レジストリの ExtendedSubCommandsKey を応用して、至って簡単にカスタマイズできます。
カスケード メニューを追加
-
レジストリのキーを作成します。Subject のところは任意の名前です。
HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\Subject
-
Subject キーに ExtendedSubCommandsKey(文字列値) を作成して、値のデータを、DesktopBackground にします。
たったこれだけの手順で完成。ちゃんと動作します。
お好みでメニューの表示を装飾します
Subject キーを開きます。
を themecpl.dll,-1 にします。メニューに個人設定と表示されます。
メニューにアイコンが表示されます。
(文字列値) を作成して、値のデータを Bottom にします。
![Directory\Background\shell\Subject](https://lh5.googleusercontent.com/-QkfrTWspwCA/U48a8GlJ1EI/AAAAAAAAIDw/xGnY8VS5SYU/d/cascading-desktopbackground-menus_3.png)
![ExtendedSubCommandsKey Icon Position value](https://lh6.googleusercontent.com/-eoviu6qWx_4/U48a8rEYDCI/AAAAAAAAIEA/OcW3R_1IYDI/d/cascading-desktopbackground-menus_4.png)
これらの値のデータは任意です。元のデスクトップのメニューが参考になります。
HKLM\SOFTWARE\Classes\DesktopBackground\Shell\Personalize
元からあるデスクトップのメニューを非表示にする
HKCU のキーに LegacyDisable を書き込み無効にする方法が安全で簡単です。
HKEY_CURRENT_USER\Software\Classes\DesktopBackground\Shell に、Display ,Gadgets ,Personalize キーを作成して、各々に、LegacyDisable (文字列値)を追加します。
![DesktopBackground](https://lh6.googleusercontent.com/-okBWXm-Ie64/U48a80Y7MmI/AAAAAAAAIEM/jlu4rM6Yc3c/s0/cascading-desktopbackground-menus_5.png)
![LegacyDisable](https://lh5.googleusercontent.com/-8A_afz1p57Y/U48a9Q2kMpI/AAAAAAAAIEI/wQdb7qWAhO8/s0/cascading-desktopbackground-menus_6.png)
参照元を非表示にしても、メニューの表示は有効です。
元に戻す
すべて HKCU に追加する形でカスタマイズしましたので、今回追加したキーや値を削除すれば簡単に元に戻ります。
カスタマイズは簡単ですが、理屈は難しいです。
ポイントは、Subjectキーに設定した ExtendedSubCommandsKey の使い方の一点です。
[HKEY_CURRENT_USER\Software\Classes\Directory\Background\shell\Subject]
"ExtendedSubCommandsKey"="DesktopBackground"
"Icon"="display.dll"
"Position"="Bottom"
@="@themecpl.dll,-1"
; hide original desktop background menu
[HKEY_CURRENT_USER\Software\Classes\DesktopBackground\Shell\Display]
"LegacyDisable"=""
[HKEY_CURRENT_USER\Software\Classes\DesktopBackground\Shell\Gadgets]
"LegacyDisable"=""
[HKEY_CURRENT_USER\Software\Classes\DesktopBackground\Shell\Personalize]
"LegacyDisable"=""
以前に紹介したSubcommandsと今回のExtendedSubCommandsKeyはカスケードメニューに使える便利なオプションです。
2022年12月1日