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 既存のメニューを呼び出す

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

    HKEY_CLASSES_ROOT\directory\BackGround\shell\myShell

    フォルダーの背景

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

    ExtendedSubCommandsKey

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

HKEY_CLASSES_ROOT\DesktopBackground\Shell

デスクトップのメニュー

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

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

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

  3. 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 というキーは見つからず、全く参考になりませんでした。

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

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