Поделиться через


Создание каскадных меню с помощью записи реестра 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

Комментарии

На следующем снимке экрана показан пример предыдущих примеров записи раздела реестра.

Снимок экрана: пример каскадного меню с вариантами блокнота и wordpad