elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  Windows (Moderador: Randomize)
| | |-+  Crear carpetas y subcarpetas dentro del menú contextual
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Crear carpetas y subcarpetas dentro del menú contextual  (Leído 16,479 veces)
Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Crear carpetas y subcarpetas dentro del menú contextual
« Respuesta #10 en: 8 Marzo 2024, 01:05 am »

Crear accesos en el menú contextual, es fácil editando el registro o utilizando ficheros de registro (scripts *.reg).

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.


En línea

zelarra

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Crear carpetas y subcarpetas dentro del menú contextual
« Respuesta #11 en: 8 Marzo 2024, 17:28 pm »

Muchas gracias. Saludos.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Crear carpetas y subcarpetas dentro del menú contextual
« Respuesta #12 en: 8 Marzo 2024, 20:44 pm »

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:

Código
  1. Windows Registry Editor Version 5.00
  2.  
  3. [HKEY_CLASSES_ROOT\Drive\shell\Mi Menú]
  4. "MUIVerb"="Menú En Cascada"
  5. "Icon"=""
  6. "Position"="Top"
  7. "SubCommands"="MenúEnCascada.Command1;MenúEnCascada.Command2"
  8.  
  9. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command1]
  10. "MUIVerb"="Opción 1"
  11. "Icon"=""
  12. "Position"="Top"
  13.  
  14. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command2]
  15. "MUIVerb"="Opción 2"
  16. "Icon"=""
  17. "Position"="Top"
  18. "SubCommands"="MenúEnCascada.Command3;MenúEnCascada.Command4"
  19.  
  20. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command3]
  21. "MUIVerb"="Sub Opción 1"
  22. "Icon"=""
  23. "Position"="Top"
  24.  
  25. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command4]
  26. "MUIVerb"="Sub Opción 2"
  27. "Icon"=""
  28. "Position"="Top"
  29. "SubCommands"="MenúEnCascada.Command5;MenúEnCascada.Command6"
  30.  
  31. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command5]
  32. "MUIVerb"="Sub Opción 3"
  33. "Icon"=""
  34. "Position"="Top"
  35.  
  36. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6]
  37. "MUIVerb"="Sub Opción 4"
  38. "Icon"=""
  39. "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:

Código
  1. Windows Registry Editor Version 5.00
  2.  
  3. [-HKEY_CLASSES_ROOT\Drive\shell\Mi Menú]
  4. [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command1]
  5. [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command2]
  6. [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command3]
  7. [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command4]
  8. [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command5]
  9. [-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.
« Última modificación: 9 Marzo 2024, 04:43 am por Eleкtro » En línea



zelarra

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Crear carpetas y subcarpetas dentro del menú contextual
« Respuesta #13 en: 8 Marzo 2024, 20:49 pm »

Muchas gracias. Una pregunta tonta. ¿Cómo se pone, pues, para

1. Abrir una carpeta
2. Abrir un programa
3. Abrir un archivo con un programa concreto?
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Crear carpetas y subcarpetas dentro del menú contextual
« Respuesta #14 en: 8 Marzo 2024, 21:05 pm »

Muchas gracias. Una pregunta tonta. ¿Cómo se pone, pues, para

1. Abrir una carpeta
2. Abrir un programa
3. Abrir un archivo con un programa concreto?

De la misma forma en como lo harías de forma tradicional, es decir, agregando una subclave "command" en la clave de registro que haga referencia a la entrada del menú contextual que quieras utilizar para realizar esas acciones, y especificando el comando a llevar a cabo en el valor por defecto ("@") de esa clave.

Por ejemplo, y tomando como punto de referencia el script con el que ilustré mi respuesta anterior; para que la entrada con nombre "Sub Opción 4" inicie el notepad harías los siguientes cambios:

Código
  1. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6]
  2. "MUIVerb"="Sub Opción 4"
  3.  
  4. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6\command]
  5. @="notepad.exe"

Para abrir el Explorer de Windows con el elemento/archivo/directorio seleccionado (en este caso sería una unidad de disco):

Código
  1. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6\command]
  2. @="\"Explorer.exe\" /Select,\"%1\""

O para iniciar notepad o cualquier otro programa pasándole como argumento el elemento seleccionado (en este caso sería una unidad de disco, por lo cual no tiene mucho sentido, pero es solo un ejemplo):

Código
  1. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6\command]
  2. @="\"notepad.exe\" \"%1\""

Te aconsejo realizar las modificaciones directamente en el Regedit, y luego exportar la clave a un script de registro para evitar cometer errores de sintaxis (al escribir una ruta, por ejemplo, debes escapar el caracter "\" usando el caracter de escape, que es el mismo caracter "\", quedando así: "\\", y al escribir comillas dobles, también: "\"").

Aténtamente,
Elektro.
« Última modificación: 8 Marzo 2024, 21:16 pm por Eleкtro » En línea



Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Crear carpetas y subcarpetas dentro del menú contextual
« Respuesta #15 en: 9 Marzo 2024, 04:35 am »

...

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.
...
Elektro.
Tienes razón Elektro... Desde win7 se introdujo...
Como siempre me tuve que apañar de aquella manera y sigo haciéndolo, pasas por alto cambios bastante útiles y fáciles.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Crear carpetas y subcarpetas dentro del menú contextual
« Respuesta #16 en: 9 Marzo 2024, 05:38 am »

Como siempre me tuve que apañar de aquella manera y sigo haciéndolo, pasas por alto cambios bastante útiles y fáciles.

A veces nos acostumbramos tanto a ciertas formas de trabajar, que pasamos por alto otras posibles formas de hacer lo mismo y que podrían facilitar (o no) nuestra tarea. En este caso, no te has perdido gran cosa.



La gente en general quizás no lo sepa, pero la inmensa mayoría de programas que interactúan con el menú contextual de archivos y carpetas lo hacen registrando un archivo DLL en el sistema operativo para añadir y controlar el comportamiento de un menú. WinRAR (RarExt.dll), 7-zip (7-zip.dll) y cualquier otro programa que se nos ocurra, por que esa es la metodología a la que recurre el programador en la distribución de su programa, es decir, el desarollo de "una DLL". Pero también existe la alternativa menos compleja (la cual ya comenté) para el usuario convencional. Y el programador, para lo que se dedica hacer, que es programar, no tiene por qué conocer ni recurrir a esa alternativa que a pesar de ser menos compleja también es menos sofisticada y eficiente.

Y ya no digo más, que soy muy pesado.

¡Saludos!
« Última modificación: 9 Marzo 2024, 05:41 am por Eleкtro » En línea



Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crear nueva entrada en menú contextual de CREAR ARCHIVO TXT « 1 2 3 »
Windows
Esgrimidor 25 22,335 Último mensaje 30 Junio 2012, 08:26 am
por Eleкtro
Crear Imagen del sistema desde el Menú contextual
Windows
HenSil 3 4,412 Último mensaje 21 Febrero 2013, 15:27 pm
por HenSil
crear carpetas y subcarpetas de acuerdo al nombre del archivo - batch
Scripting
rochro 0 3,002 Último mensaje 5 Octubre 2015, 23:15 pm
por rochro
Cómo cifrar archivos o carpetas desde el menú contextual de Windows 10 sin ...
Noticias
wolfbcn 0 1,601 Último mensaje 26 Enero 2017, 18:40 pm
por wolfbcn
Crear Menu Contextual Windows « 1 2 3 4 »
.NET (C#, VB.NET, ASP)
rigorvzla 35 18,696 Último mensaje 19 Diciembre 2019, 20:17 pm
por rigorvzla
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines