Subcommands のもう一つの使い方です。
前回の Subcommands に、値のデータを追加すると予め定義されたコマンドを呼び出すことができます。
Windows7 のエクスプローラーのツールバーのボタンで実際に使われています。
呼び出せるコマンド群は以下のキーで定義されています。
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell
コンピューターアイコンでもできますが、例が良くないので、フォルダーの背景にメニューを追加してみます。
HKCR\directory\BackGround\shell
myShell(適当な名前)キーを作り、Subcommands(文字列値)を作成します。SubcommandsにCommandStoreの追加したい機能のキー名を書き込みます。
複数の機能を付ける場合はデータを ; (セミ コロン)で区切ります。
セパレーターは、| (縦線) または、Windows.separator です。
面白いのは、Windows.organize には SubCommands で Windows.layout などの他のコマンドが使われていて、さらにWindows.layoutにも、Windows.menubar などが含まれていてネストされています。
ちょっと原因不明なのですが、コマンドの並び順によって表示されない場合と表示されても機能しない場合がありました。
特にセパレータと、それ以降のコマンドが表示されない場面が多く見られました。
順番を入れ替えると表示される場合もありましたが、表示されない場合もあり、初めは、「一度登場したメニューは表示されない」と仮定して試してみましたが、これも違うようで、もう少し調べたいと思います。
実行が不可能なコマンドは元々表示されません。
例えばフォルダーの背景のメニューに Windows.burn (書き込む|ディスク イメージの書き込み) を付けても何も表示されません。
全て選択(Windows.selectall)、フォルダーと検索のオプション(Windows.folderoptions)、閉じる(Windows.closewindow) などが実用的かもしれませんが、それらはサブメニューにするより、通常のメニューにしたいので、レイアウト機能を選択して名前とアイコンで外観を整えてみました。
レイアウト メニューを付ける
[HKEY_CLASSES_ROOT\directory\BackGround\shell\myShell]
"Subcommands"="Windows.menubar;|;Windows.previewpane;Windows.readingpane;Windows.navpane;Windows.librarypane"
"Icon"="shell32.dll,-16742"
"MUIVerb"="@shell32.dll,-31413"
元に戻す
[-HKEY_CLASSES_ROOT\directory\BackGround\shell\myShell]
Subcommands の使用例を追加しました。
Windows10 のコンソールをまとめてカスケードメニューにする