Cómo crear menús en cascada con la entrada del Registro ExtendedSubCommandsKey

En Windows 7 y versiones posteriores, puedes usar la subclave ExtendedSubCommandsKey para crear menús en cascada extendidos.

La siguiente captura de pantalla es un ejemplo de un menú en cascada extendido.

captura de pantalla que muestra el menú en cascada extendido para dispositivos

Dado que HKEY_CLASSES_ROOT es una combinación de HKEY_CURRENT_USER y HKEY_LOCAL_MACHINE, puede registrar los subversos en la subclave HKEY_CURRENT_USER\Clases desoftware\. La ventaja de hacerlo es que no se requiere el permiso con privilegios elevados. Otras asociaciones de archivos pueden reutilizar este conjunto completo de verbos especificando la misma subclave ExtendedSubCommandsKey . Si no necesita reutilizar este conjunto de verbos, puede enumerar los verbos bajo el elemento primario. En este caso, asegúrese de que el valor predeterminado del elemento primario está vacío, como se muestra en el ejemplo de entrada del Registro de esta sección.

Instrucciones

Paso 1:

Cree una subclave en HKEY_CLASSES_ROOT\shell\ deProgID\CascadeMenuKey y asigne a CascadeMenuKey un nombre como CascadeTest, por ejemplo. A continuación, agregue una entrada MUIVerb de REG_SZ tipo y asígnele un nombre como Test Cascade Menu 2, como se muestra en el siguiente ejemplo del Registro.

HKEY_CLASSES_ROOT
   txtfile
      shell
         CascadeTest
            MUIVerb = Test Cascade Menu 2

Paso 2:

En la subclave CascadeTest que ha creado, agregue una subclave ExtendedSubCommandsKey y, a continuación, agregue los subcomandos del documento (de tipo REG_SZ); por ejemplo:

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

Asegúrese de que el valor predeterminado de la subclave Test Cascade Menu 2 está vacío y se muestra como (valor no establecido).

Paso 3:

Rellene los subversos mediante cualquiera de las siguientes implementaciones de verbo estáticos. Tenga en cuenta que la subclave CommandFlags representa valores EXPCMDFLAGS. Si desea agregar un separador antes o después del elemento de menú en cascada, use ECF_SEPARATORBEFORE (0x20) o ECF_SEPARATORAFTER (0x40). Para obtener una descripción de estas marcas de Windows 7 y posteriores, consulta IExplorerCommand::GetFlags. ECF_SEPARATORBEFORE solo funciona para los elementos de menú de nivel superior. MUIVerb es de tipo REG_SZ y CommandFlags es de 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

Comentarios

La siguiente captura de pantalla es una ilustración de los ejemplos de entrada de clave del Registro anteriores.

captura de pantalla que muestra un ejemplo de un menú en cascada que muestra las opciones del Bloc de notas y el bloc de notas