Comment ajouter un élément au menu contextuel d'un dossier?

8

Je sais comment ajouter un menu contextuel lorsque vous cliquez sur un dossier réel:

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

mais qu'en est-il de cliquer sur rien dans un dossier ?

comme je crée un nouveau dossier sur mon bureau, double-cliquez pour entrer dans le dossier, puis faites un clic droit sur rien (le dossier est vide), maintenant je veux que mon menu contextuel apparaisse dans cette situation.

xero
la source
Je pense que la clé que vous voulez estHKEY_CLASSES_ROOT\Directory\Background
Andrew Lambert
1
merci @Amazed qui était vraiment proche ... c'est en fait: [HKEY_CLASSES_ROOT\Directory\Background\shell\commandNameHere]
xero
5
résolu pour toute personne intéressée, voici le fichier .REG pour ajouter cette fonctionnalité au menu contextuel 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
Il est permis et encouragé de répondre à vos propres questions. Si vous avez résolu votre problème, postez une réponse et acceptez-la.
Dennis

Réponses:

10

Pour toute personne intéressée, voici le .regfichier pour ajouter cette fonctionnalité au menu contextuel 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"

(Tiré du commentaire de xero )

Cela ajoute une commande au menu contextuel nommé "git bash here" avec une icône, qui ouvre une console.

La commande est ajoutée sous les deux:

  • HKEY_CLASSES_ROOT\Directory\shell, le menu contextuel lorsque vous cliquez avec le bouton droit sur un dossier
  • HKEY_CLASSES_ROOT\Directory\background, le menu contextuel lorsque vous cliquez avec le bouton droit sur l'espace vide "d'arrière-plan" dans un dossier
Dennis
la source
2
Soyez conscient de la valeur "none" pour l'action par défaut ('@ =') Sans ce 'none', Windows traite l'une des actions ajoutées par défaut, donc double-cliquer sur un répertoire n'ouvre plus le répertoire mais déclenche l'action - ce qui rend Windows presque inutilisable. -> Définir «aucun» comme action par défaut permet d'ajouter des éléments de menu contextuel sans changer le comportement par défaut 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
la source
cela affichera votre menu contextuel sur tous les dossiers ... lorsque vous compilerez ce code, assurez-vous donc que vous disposez des privilèges administratifs .. J'espère que ce code vous sera utile
Kashif Meo
1
Pourriez-vous modifier votre réponse pour expliquer un peu plus ce que fait votre code?
Burgi
Bien que cela puisse répondre à la question, ce serait une meilleure réponse si vous pouviez expliquer pourquoi .
DavidPostill
en fait, ce code crée simplement une nouvelle clé pour le menu contextuel. key et subkey ont également leurs valeurs respectivement. lorsque ce code est compilé et exécuté, puis sur chaque dossier, il affichera ce menu contextuel ...
Kashif Meo
mais je pense que la question a changé .. cela peut l'aider mais pas la solution exacte ..
Kashif Meo