Compartilhar via


Como criar menus em cascata com a entrada do Registro ExtendedSubCommandsKey

No Windows 7 e posterior, você pode usar a subchave ExtendedSubCommandsKey para criar menus estendidos em cascata.

A captura de tela a seguir é um exemplo de um menu em cascata estendido.

captura de tela mostrando o menu em cascata estendido para dispositivos

Como HKEY_CLASSES_ROOT é uma combinação de HKEY_CURRENT_USER e HKEY_LOCAL_MACHINE, você pode registrar os subverbs na subchaveclasses desoftware\do HKEY_CURRENT_USER\. A vantagem de fazer isso é que a permissão elevada não é necessária. Outras associações de arquivo podem reutilizar todo esse conjunto de verbos especificando a mesma subchave ExtendedSubCommandsKey . Se você não precisar reutilizar esse conjunto de verbos, poderá listar os verbos no pai. Nesse caso, verifique se o valor padrão do pai está vazio, conforme ilustrado no exemplo de entrada do Registro nesta seção.

Instruções

Etapa 1:

Crie uma subchave em HKEY_CLASSES_ROOT\shell\ProgID\CascadeMenuKey e dê ao CascadeMenuKey um nome como CascadeTest, por exemplo. Em seguida, adicione uma entrada MUIVerb do tipo REG_SZ e dê a ele um nome como Menu em Cascata de Teste 2, conforme ilustrado no exemplo do Registro a seguir.

HKEY_CLASSES_ROOT
   txtfile
      shell
         CascadeTest
            MUIVerb = Test Cascade Menu 2

Etapa 2:

Na subchave CascadeTest que você criou, adicione uma subchave ExtendedSubCommandsKey e adicione os subcomandos do documento (do tipo REG_SZ); por exemplo:

HKEY_CLASSES_ROOT
   txtfile
      Shell
         Test Cascade Menu 2
            (Default)
            ExtendedSubCommandsKey
               Layout
               Properties
               Select all

Verifique se o valor padrão da subchave Menu em Cascata de Teste 2 está vazio e mostrado como (valor não definido).

Etapa 3:

Preencha os subverbs usando qualquer uma das implementações de verbo estático a seguir. Observe que a subchave CommandFlags representa valores EXPCMDFLAGS. Se você quiser adicionar um separador antes ou depois do item de menu em cascata, use ECF_SEPARATORBEFORE (0x20) ou ECF_SEPARATORAFTER (0x40). Para obter uma descrição desses sinalizadores do Windows 7 e posteriores, consulte IExplorerCommand::GetFlags. ECF_SEPARATORBEFORE funciona apenas para os itens de menu de nível superior. MUIVerb é do tipo REG_SZ e CommandFlags é do tipo 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

Comentários

A captura de tela a seguir é uma ilustração dos exemplos de entrada de chave do Registro anteriores.

captura de tela mostrando um exemplo de um menu em cascata mostrando opções de bloco de notas e wordpad