如何使用 ExtendedSubCommandsKey 注册表项创建级联菜单

在 Windows 7 及更高版本中,可以使用 ExtendedSubCommandsKey 子项创建扩展级联菜单。

以下屏幕截图是扩展级联菜单的示例。

显示设备的扩展级联菜单的屏幕截图

由于 HKEY_CLASSES_ROOTHKEY_CURRENT_USERHKEY_LOCAL_MACHINE的组合,因此可以在 “HKEY_CURRENT_USER\软件\ ”子项下注册子项。 这样做的优点是不需要提升的权限。 其他文件关联可以通过指定相同的 ExtendedSubCommandsKey 子项来重复使用这组整个谓词。 如果不需要重复使用这组谓词,则可以在父级下列出谓词。 在这种情况下,请确保父级的默认值为空,如本部分中的注册表项示例所示。

Instructions

步骤 1:

例如,在 HKEY_CLASSES_ROOTprogID\shell\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:

使用以下任何静态谓词实现填充子ver。 请注意,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

备注

以下屏幕截图是上述注册表项条目示例的插图。

显示显示记事本和写字板选项的级联菜单示例的屏幕截图