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

xero
fuente
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
Dennis
fuente
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;}
Kashif Meo
fuente
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