2011年8月22日月曜日

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

2012年3月18日追記
内容が間違っている可能性があります!

急に動作しなくなった為、様々な環境で再確認しましたが、全く動作しないか、一部しか動作しませんでした。

申し訳ありません。

ただ、Windows.layout関係以外はちゃんと動作します。

なぜ今まで使えたのか、急に使えなくなったのか不明です。

少し言及していますが、組み合わせによって、表示されなくなったり動作しないときもあります。




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]