2011年8月22日月曜日

コンピューターアイコンに便利な機能を付ける 4

Subcommands カスケード メニュー

Subcommands のもう一つの使い方です。

前回の Subcommands に、値のデータを追加すると予め定義されたコマンドを呼び出すことができます。

Windows7 のエクスプローラーのツールバーのボタンで実際に使われています。

Toolbar Button

呼び出せるコマンド群は以下のキーで定義されています。

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell


コンピューターアイコンでもできますが、例が良くないので、フォルダーの背景にメニューを追加してみます。

HKCR\directory\BackGround\shell

myShell(適当な名前)キーを作り、Subcommands(文字列値)を作成します。

HKCR\directory\BackGround\shell

SubcommandsCommandStoreの追加したい機能のキー名を書き込みます。

Windows.organize (整理)を付けてみます。

Windows.organize


僅かな操作で、ここまでできます。

フォルダーの背景のメニュー

複数の機能を付ける場合はデータを ; (セミ コロン)で区切ります。

セパレーターは、| (縦線) または、Windows.separator です。

面白いのは、Windows.organize には SubCommands で Windows.layout などの他のコマンドが使われていて、さらにWindows.layoutにも、Windows.menubar などが含まれていてネストされています。


ちょっと原因不明なのですが、コマンドの並び順によって表示されない場合と表示されても機能しない場合がありました。

特にセパレータと、それ以降のコマンドが表示されない場面が多く見られました。

順番を入れ替えると表示される場合もありましたが、表示されない場合もあり、初めは、「一度登場したメニューは表示されない」と仮定して試してみましたが、これも違うようで、もう少し調べたいと思います。

実行が不可能なコマンドは元々表示されません。

例えばフォルダーの背景のメニューに Windows.burn (書き込む|ディスク イメージの書き込み) を付けても何も表示されません。


全て選択(Windows.selectall)、フォルダーと検索のオプション(Windows.folderoptions)、閉じる(Windows.closewindow) などが実用的かもしれませんが、それらはサブメニューにするより、通常のメニューにしたいので、レイアウト機能を選択して名前とアイコンで外観を整えてみました。


レイアウト
カッコイイでしょ?実際に使っています。


レイアウト メニューを付ける

Windows Registry Editor Version 5.00

[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"

元に戻す

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\directory\BackGround\shell\myShell]

Subcommands の使用例を追加しました。
Windows10 のコンソールをまとめてカスケードメニューにする