2011年8月28日日曜日

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

ExtendedSubCommandsKeyの使い方

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

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

…だと思います。

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

例に挙げたものについては動作を確認しましたが、例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というキーは見つからず、全く参考になりませんでした。

ネタの元の説明の文章は難解な上、どうも間違っている模様。
探しに探した結果見つかったのはこちらのサイトさんで、もっとも的確な答えだと思いますが、ここだけでしか見つからなかったです。
(質問はまま見つかりましたが、答えが…)