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.
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.