2011年8月28日日曜日

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

ExtendedSubCommandsKey カスケード メニュー

ExtendedSubCommandsKeyの使い方

前回のSubcommandsHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore からの参照だけなのに対して、ExtendedSubCommandsKey は参照先を指定できます。

参照先がHKEY_CLASSES_ROOTに変わっただけでほとんど Subcommands と同じで併用もできますShell コマンドだけというのも同様。

…だと思います。

かなり自信がありません。参考程度にお願いします。(文末に言い訳あり)

2014 年、おおよそ理解できたのでデスクトップのシェルメニューをサブメニューにするExtendedSubCommandsKey を使ったカスタマイズを追記しました。

例に挙げたものについては動作を確認しましたが、例1の他のキーは呼び出せない場合があります。例2については注意点がありますが大丈夫だと思います。

フォルダーの背景に ExtendedSubCommandsKey でメニューを追加してみます。


例1 既存のメニューを呼び出す。

フォルダーの背景にmyShell (適当な名前)キーを作成します。

HKEY_CLASSES_ROOT\directory\BackGround\shell\myShell

フォルダーの背景

ExtendedSubCommandsKey(文字列値)を作成して、DesktopBackgroundにします。

ExtendedSubCommandsKey

Window 7 のデスクトップのメニューを呼び出しています。

HKEY_CLASSES_ROOT\DesktopBackground\Shell

デスクトップのメニュー

例2 独自にメニューを設定しておく

HKEY_CLASSES_ROOT\MyTools (適当な名前)キーを作成して、Shellコマンドを設定しておきます。
フォルダー オプション を設定してみました。control folders
control folders

この時、項目のキーの(既定)か MUIVerb 値で名前を設定しておかないと表示されません。
項目名が必要
MUIVerb


HKEY_CLASSES_ROOT\directory\BackGround\shell\myShell

ExtendedSubCommandsKey (文字列値)を作成して、MyToolsにします。

ExtendedSubCommandsKey

フォルダー オプション

Subcommands のように ; (セミコロン)でメニューを並べることはできません。


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\MyTools\shell\FolderOption]
"Icon"="%SystemRoot%\\system32\\imageres.dll,-166"
"MUIVerb"="@%SystemRoot%\\system32\\shell32.dll,-22985"

[HKEY_CLASSES_ROOT\MyTools\shell\FolderOption\command]
@="control folders"

[HKEY_CLASSES_ROOT\directory\BackGround\shell\myShell]
"ExtendedSubCommandsKey"="MyTools"


弁明

Windows 7 で ExtendedSubCommandsKey が使われているのは、おそらく一カ所だけです。

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

しかもそのデータの ShareCommands というキーは見つからず、全く参考になりませんでした。

ネタの元の説明の文章は難解な上、どうも間違っている模様。

探しに探した結果見つかったのはこちらのサイトさんで、もっとも的確な答えだと思いますが、ここだけでしか見つからなかったです。
(質問はまま見つかりましたが、答えが…)