Con la sugerencia del programa de terceros mencionado por @
SonGoku ya estaba todo dicho (yo iba a proponer el mismo programa, por que al final esa es la solución más rápida, intuitiva y óptima para la mayoría de usuarios), sin embargo me veo en la obligación de contrastar cierta información incorrecta que se ha ofrecido:
En cambio para crear submenús hay que crear una dll que debe implementar ciertas interfaces, que utiliza el menú contextual. ...para lo cual hay que programar y no sé si es este tu caso, luego si con la solución que te ofrece Songoku, te basta, como usuario no te hace falta más entonces.
Debo decir que eso es incorrecto, @
Serapis. Crear una extensión de shell de un controlador del menú contextual, o expresado como tu dijiste para que lo entienda mejor la gente: "un archivo DLL que implemente ciertas interfaces de programación" - eso no es una obligatoriedad, no es en absoluto un requisito, simplemente es una forma de hacerlo.
Crear menús, con todos los submenús que uno quiera y con sus correspondientes funciones para cada entrada del menú (abrir una carpeta, iniciar un programa, etc), se puede llevar a cabo manipulando el registro de Windows de forma convencional. Y no es para nada algo complejo, simplemente hay que familiarizarse con el concepto de COMANDOS, y luego ya solo es cuestión de su asignación y reutilización en las claves de los menús donde queramos añadir dichos COMANDOS.
A continuación muestro un script del Registro de Windows que creará un menú en cascada con varios submenús, que se mostrará al hacer click derecho sobre una unidad de disco:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Drive\shell\Mi Menú]
"MUIVerb"="Menú En Cascada"
"Icon"=""
"Position"="Top"
"SubCommands"="MenúEnCascada.Command1;MenúEnCascada.Command2"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command1]
"MUIVerb"="Opción 1"
"Icon"=""
"Position"="Top"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command2]
"MUIVerb"="Opción 2"
"Icon"=""
"Position"="Top"
"SubCommands"="MenúEnCascada.Command3;MenúEnCascada.Command4"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command3]
"MUIVerb"="Sub Opción 1"
"Icon"=""
"Position"="Top"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command4]
"MUIVerb"="Sub Opción 2"
"Icon"=""
"Position"="Top"
"SubCommands"="MenúEnCascada.Command5;MenúEnCascada.Command6"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command5]
"MUIVerb"="Sub Opción 3"
"Icon"=""
"Position"="Top"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6]
"MUIVerb"="Sub Opción 4"
"Icon"=""
"Position"="Top"
(Donde pone "Sub Opción 4" y "5" debería poner "3" y "4", eso fue un simple error de escritura que ya está corregido en el script del Registro de Windows de aquí arriba.)
Y un script para eliminar / deshacer las claves y valores de registro generados por el script anterior:
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\Drive\shell\Mi Menú]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command1]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command2]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command3]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command4]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command5]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6]
Por último, aquí tienen además una forma ligeramente distinta de manipular el registro para llevar a cabo la misma finalidad, mediante el uso de la subclave
ExtendedSubCommandsKey:
-
learn.microsoft.com - Cómo crear menús en cascada con la entrada del Registro ExtendedSubCommandsKey -
learn.microsoft.com - How to Create Cascading Menus with the SubCommands Registry Entry(son dos artículos con ejemplos diferentes)
Aténtamente,
Elektro.