¿Cómo agrega un elemento al menú contextual de una carpeta?


8

Sé cómo agregar un menú contextual para cuando haces clic en una carpeta real:

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

pero ¿qué hay de hacer clic en nada en una carpeta ?

como hago una nueva carpeta en mi escritorio, hago doble clic para ingresar a la carpeta, luego hago clic derecho en nada (la carpeta está vacía), ahora quiero que mi menú contextual aparezca en esta situación.


Creo que la clave que quieres esHKEY_CLASSES_ROOT\Directory\Background
— Andrew Lambert,

1
Gracias @Amazed que estaba muy cerca ... en realidad es: [HKEY_CLASSES_ROOT\Directory\Background\shell\commandNameHere]
— xero

55
resuelto para cualquier persona interesada aquí está el archivo .REG para agregar esta funcionalidad al menú contextual de Windows: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Shell] @="none"`` [HKEY_CLASSES_ROOT\Directory\shell\gitBashHere] [HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere] "Icon"="C:\\icons\\git-gui.ico" "MUIVerb"="git bash here" "Position"="bottom"``[HKEY_CLASSES_ROOT\Directory\shell\gitBashHere\command] [HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere\command] @="C:\\Program Files\\Console2\\Console.exe -d %v"
— xero

2
Está permitido y alentado responder sus propias preguntas. Si resolvió su problema, publique una respuesta y acéptela.
— Dennis

Respuestas:


10

Para cualquier persona interesada, aquí está el .regarchivo para agregar esta funcionalidad al menú contextual de Windows:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Shell]
@="none"
[HKEY_CLASSES_ROOT\Directory\shell\gitBashHere]
[HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere]
"Icon"="C:\\icons\\git-gui.ico"
"MUIVerb"="git bash here"
"Position"="bottom" 
[HKEY_CLASSES_ROOT\Directory\shell\gitBashHere\command] 
[HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere\command]
@="C:\\Program Files\\Console2\\Console.exe -d %v"

(Tomado del comentario de xero )

Esto agrega un comando al menú contextual llamado "git bash here" con un icono, que abre una consola.

El comando se agrega debajo de ambos:

  • HKEY_CLASSES_ROOT\Directory\shell, el menú contextual cuando hace clic derecho en una carpeta
  • HKEY_CLASSES_ROOT\Directory\background, el menú contextual cuando hace clic con el botón derecho en el espacio vacío "fondo" mientras está en una carpeta

2
Tenga en cuenta el valor "none" para la acción predeterminada ('@ =') Sin este 'none', Windows trata una de las acciones agregadas como predeterminadas, por lo que hacer doble clic en un directorio ya no abre el directorio pero desencadena la acción - lo que hace que Windows sea casi inutilizable. -> Establecer 'ninguno' como acción predeterminada permite agregar elementos de menú contextual sin cambiar el comportamiento predeterminado de Windows.

0
void WriteContextMenu(LPSTR key, LPSTR value) {

HKEY hkey=0; DWORD disp;

if(RegCreateKeyEx(HKEY_CLASSES_ROOT, key, 0, NULL, REP_OPTION_NON_VOLATILE, KEY_WRITE,NULL, &hkey, &disp)!=ERROR_SUCCESS) 

{

     if(RegOpenKey(HKEY_CLASSES_ROOT,key,&hkey)!=ERROR_SUCCESS)
    {   

      cout<<"Unable to open Registry"<<key;

        }

}if(RegSetValueEx(hkey,TEXT(""),0,REG_SZ,(LPBYTE)value, strlen(value)*sizeof(char))!=ERROR_SUCCESS)

{

   RegCloseKey(hkey);

       cout<<"Unable to set Registry Value ";

} else{

   cout<<value<<" value has set"<<endl;
}
}int main(){LPSTR key="Folder\\shell\\Testing_App"; 

 LPSTR valueKey="Menu_Title";

 LPSTR Subkey="Folder\\shell\\Testing_App\\command";


/*Here put the path or action you want to perform like you want to
    open cmd  on your context menu so the value id */

    LPSTR valueSubKey="cmd.exe";

    WriteContextMenu(key, ValueKey); 
    WriteContextMenu(Subkey, ValueSubKey);

return 0;}

esto va a mostrar su menú contextual de todas las carpetas ... al compilar este código para asegurarse de que tiene privilegios de administrador .. Esperanza este código será útil para usted
— Kashif Meo

1
¿Podría editar su respuesta para explicar un poco más lo que hace su código?
— Burgi

Si bien esto puede responder la pregunta, sería una mejor respuesta si pudiera proporcionar alguna explicación de por qué lo hace.
— DavidPostill

en realidad este código solo creará una nueva clave para el menú contextual. clave y subclave también sus valores respectivamente. cuando este código se compila y ejecuta en cada carpeta, mostrará ese menú contextual ...
— Kashif Meo

pero creo que se cambia la pregunta req .. le puede ayudar, pero no la solución exacta ..
— Kashif Meo

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.