ExtendedSubCommandsKey レジストリ エントリを使用してカスケード メニューを作成する方法
Windows 7 以降では、 ExtendedSubCommandsKey サブキーを使用して、拡張カスケード メニューを作成できます。
次のスクリーン ショットは、拡張カスケード メニューの例です。
HKEY_CLASSES_ROOTはHKEY_CURRENT_USERとHKEY_LOCAL_MACHINEの組み合わせであるため、HKEY_CURRENT_USER\ソフトウェア\クラス サブキーの下にサブバーブを登録できます。 その利点は、昇格されたアクセス許可が必要ないということです。 他のファイルの関連付けでは、同じ ExtendedSubCommandsKey サブキーを指定することで、この動詞のセット全体を再利用できます。 この動詞のセットを再利用する必要がない場合は、親の下に動詞を一覧表示できます。 この場合は、このセクションのレジストリ エントリの例に示すように、親の既定値が空であることを確認します。
Instructions
手順 1:
たとえば、HKEY_CLASSES_ROOT ProgID\シェル\CascadeMenuKeyの下\にサブキーを作成し、CascadeMenuKey に CascadeTest などの名前を付けます。 次に、REG_SZ種類の MUIVerb エントリ を 追加し、次のレジストリ例に示すように、[テスト カスケード メニュー 2] などの名前を付けます。
HKEY_CLASSES_ROOT
txtfile
shell
CascadeTest
MUIVerb = Test Cascade Menu 2
手順 2:
作成した CascadeTest サブキーの下に ExtendedSubCommandsKey サブキーを追加し、( REG_SZ 型の) ドキュメント サブコマンドを追加します。例えば:
HKEY_CLASSES_ROOT
txtfile
Shell
Test Cascade Menu 2
(Default)
ExtendedSubCommandsKey
Layout
Properties
Select all
[テスト カスケード メニュー 2] サブキーの既定値が空で、(値が設定されていない) として表示されていることを確認します。
手順 3:
次のいずれかの静的動詞実装を使用して、サブバーブを設定します。 CommandFlags サブキーは EXPCMDFLAGS 値を表します。 カスケード メニュー項目の前後に区切り記号を追加する場合は、ECF_SEPARATORBEFORE (0x20) またはECF_SEPARATORAFTER (0x40) を使用します。 これらの Windows 7 以降のフラグの説明については、「 IExplorerCommand::GetFlags」を参照してください。 ECF_SEPARATORBEFOREは、最上位のメニュー項目に対してのみ機能します。 MUIVerb は REG_SZ 型で、CommandFlags は REG_DWORD 型です。
HKEY_CLASSES_ROOT
txtile
Shell
Test Cascade Menu 2
(Default)
ExtendedSubCommandsKey
Shell
cmd1
MUIVerb = Notepad
command
(Default) = %SystemRoot%\system32\notepad.exe %1
cmd2
MUIVerb = Wordpad
CommandFlags = 0x20
command
(Default) = C:\Program Files\Windows NT\Accessories\wordpad.exe %1
解説
次のスクリーン ショットは、前のレジストリ キーエントリの例の図です。