Создание каскадных меню с помощью записи реестра ExtendedSubCommandsKey
В Windows 7 и более поздних версиях можно использовать подраздел ExtendedSubCommandsKey для создания расширенных каскадных меню.
На следующем снимке экрана показан пример расширенного каскадного меню.
Так как HKEY_CLASSES_ROOT представляет собой сочетание HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE, вы можете зарегистрировать вложенные объектыв подразделеклассов программногообеспечения\ HKEY_CURRENT_USER\. Преимуществом этого является то, что повышенные разрешения не требуются. Другие сопоставления файлов могут повторно использовать весь этот набор команд, указав тот же подраздел ExtendedSubCommandsKey . Если вам не нужно повторно использовать этот набор глаголов, можно перечислить их в родительском списке. В этом случае убедитесь, что родительское значение по умолчанию пусто, как показано в примере записи реестра в этом разделе.
Инструкции
Шаг 1.
Создайте подраздел в HKEY_CLASSES_ROOT\оболочке\ProgID\CascadeMenuKey и присвойте CascadeMenuKey имя, например CascadeTest. Затем добавьте запись MUIVerb типа REG_SZ и присвойте ей имя, например Test Cascade Menu 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
Убедитесь, что значение по умолчанию подраздела Test Cascade Menu 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
Комментарии
На следующем снимке экрана показан пример предыдущих примеров записи раздела реестра.