ファイルとフォルダーのコンテキストメニューに移動とコピーを一括管理できる機能を付けます。
-
コピーメニュー
-
レジストリキーを作成。
HKCU\SOFTWARE\Classes\AllFilesystemObjects\shell\CopyToMenu
-
ExplorerCommandHandler(文字列値)を作成、データを{3852C2E2-4A16-4b11-8E71-F8904C37EC3D}にします。
-
Icon(文字列値)を作成して、データをimageres.dll,-5334にします。
-
-
移動メニュー
-
レジストリキーを作成。
HKCU\SOFTWARE\Classes\AllFilesystemObjects\shell\MoveToMenu
-
ExplorerCommandHandler(文字列値)を作成、データを{F60C3E02-214A-462b-9B07-56EA38545A13}にします。
-
Icon(文字列値)を作成して、データをimageres.dll,-5303にします。
-
-
AllFilesystemObjects キーへ SeparatorBeforeAndAfter(文字列値)を追加して完成です。
[HKEY_CURRENT_USER\SOFTWARE\Classes\AllFilesystemObjects]
"SeparatorBeforeAndAfter"=""
[HKEY_CURRENT_USER\SOFTWARE\Classes\AllFilesystemObjects\shell\CopyToMenu]
"ExplorerCommandHandler"="{3852C2E2-4A16-4b11-8E71-F8904C37EC3D}"
"Icon"="imageres.dll,-5304"
[HKEY_CURRENT_USER\SOFTWARE\Classes\AllFilesystemObjects\shell\MoveToMenu]
"ExplorerCommandHandler"="{F60C3E02-214A-462b-9B07-56EA38545A13}"
"Icon"="imageres.dll,-5303"
解説
AllFilesystemObjects はファイルとフォルダーです。
SeparatorBeforeAndAfter は AllFilesystemObjects 全体の上下にセパレーターを挿入します。
同じセパレーターでも SeparatorAfter と SeparatorBefore は、CopyToMenu や MoveToMenu のシェルメニュー個々に設置できます。
メニューを入れ替えるには、shell の (既定)にMoveToMenuと記述します。コンマで区切ってキー名を記述するとその順番に並びます。
アイコンはエクスプローラーのリボンと同じものを指定しています。
サブコマンドにはできない
それほど出番はないと思われるのでSubCommands でカスケードメニューにまとめたいのですが、これがうまくいきません。
コピーしかメニューが出ない。
CommandStore を利用
[HKEY_CURRENT_USER\SOFTWARE\Classes\AllFilesystemObjects\shell\Windows.organize]
"SubCommands"="Windows.CopyToMenu;Windows.MoveToMenu"
SubCommands で Shell コマンドをサブメニュー化
[HKEY_CURRENT_USER\SOFTWARE\Classes\AllFilesystemObjects\shell\organize]
"SubCommands"=""
[HKEY_CURRENT_USER\SOFTWARE\Classes\AllFilesystemObjects\shell\organize\shell\CopyToMenu]
"ExplorerCommandHandler"="{3852C2E2-4A16-4b11-8E71-F8904C37EC3D}"
[HKEY_CURRENT_USER\SOFTWARE\Classes\AllFilesystemObjects\shell\organize\shell\MoveToMenu]
"ExplorerCommandHandler"="{F60C3E02-214A-462b-9B07-56EA38545A13}"
似た機能の Windows.CopyToBrowser;Windows.MoveToBrowser では支障がないので、次回にその点を詳しく解説します。