J'ai découvert comment ajouter des éléments de menu contextuel contextuels aux fichiers de l'Explorateur Windows, en ajoutant des clés au registre. C'est à dire. Je peux faire un clic droit sur un fichier dans l'explorateur et exécuter une application personnalisée sur ce fichier.
Je voudrais faire la même chose pour un dossier et je n'ai pas encore trouvé le moyen de le faire. Je vois des articles sur la création/écriture de gestionnaires de menus contextuels personnalisés, mais je préférerais ne pas y aller.
J'ai trouvé un article ici sur la façon d'ajouter des éléments de menu contextuel en cascade au bureau et à "Ordinateur" dans l'Explorateur, mais cela ne fonctionne pour aucun dossier.
J'aimerais pouvoir ajouter mon application personnalisée au menu contextuel et la faire fonctionner à la fois sur les fichiers et sur les dossiers. Y a-t-il un moyen de faire cela sans écrire un gestionnaire de menu contextuel?
Dans tous les cas:
icon
pour la clé créée à l'étape 1 avec une valeur correspondant à un chemin de ressource d'icône. Vous pouvez également fournir un argument entier pour spécifier quelle icône utiliser. Exemple: %SystemRoot%\System32\Shell32.dll,3
Extended
pour la clé créée à l'étape 1Position
avec l'un des éléments suivants: Top
, Bottom
J'ai trouvé la solution dans l'article ci-dessous, qui décrit comment procéder via le registre pour les fichiers, ainsi que pour les dossiers:
Les deux articles suivants fournissent des informations et des options supplémentaires:
Je suis retourné et ai également répondu à cela dans un autre sujet car il ne semble pas y avoir beaucoup sur cette question en particulier.
J'ai trouvé que le moyen le plus simple était d'ajouter une valeur de chaîne à la clé appelée "AppliesTo" et de définir sa valeur sur "sous: {chemin}".
Dans mon exemple, je veux qu'il regarde uniquement dans le lecteur T, ma valeur de chaîne est donc "AppliesTo": "sous: T:".
En C #, ceci est facilement accompli avec ce qui suit:
RegistryKey _key = Registry.ClassesRoot.OpenSubKey("Folder\\Shell", true);
RegistryKey newkey = _key.CreateSubKey("My Menu Item");
newkey.SetValue("AppliesTo", "under:T:");
RegistryKey subNewkey = newkey.CreateSubKey("Command");
subNewkey.SetValue("", "C:\\yourApplication.exe");
subNewkey.Close();
newkey.Close();
_key.Close();
Vous avez trouvé une solution plus propre, plus facile et plus rapide: créez un fichier texte, remplissez-le avec ce contenu, mettez-le à jour en fonction de vos besoins, enregistrez-le avec le suffixe .reg et lancez-le (il n'a pas besoin des privilèges d'administrateur car il accède à la partie utilisateur du registre ):
Windows Registry Editor Version 5.00
; Setup context menu item for click on right panel:
[HKEY_CURRENT_USER\Software\Classes\directory\Background\Shell\MenuItemNameBackground\command]
@="C:\\yourpath\\executable.exe \"%1\""
; Optional: specify an icon for the item:
; HKEY_CURRENT_USER\Software\Classes\directory\Background\Shell\MenuItemNameBackground]
;"icon"="C:\\yourpath\\appicon.ico"
; Optional: specify a position in the menu
; HKEY_CURRENT_USER\Software\Classes\directory\Background\Shell\MenuItemNameBackground]
;"position"="Bottom"
; -------------------------------------------------------------------------------------
; Setup context menu item for click on folders tree item:
[HKEY_CURRENT_USER\Software\Classes\directory\Shell\MenuItemNamePanel\command]
@="C:\\yourpath\\executable.exe \"%1\""
; Optional: specify an icon for the item:
; [HKEY_CURRENT_USER\Software\Classes\directory\Shell\MenuItemNamePanel]
;"icon"="C:\\yourpath\\appicon.ico"
; Optional: specify a position in the menu
; [HKEY_CURRENT_USER\Software\Classes\directory\Shell\MenuItemNamePanel]
;"position"="Top"
De cette façon, vous pouvez également avoir une sauvegarde de votre configuration: enregistrez simplement le fichier .reg dans un endroit sûr. Si vous modifiez manuellement le registre après le lancement du fichier, cliquez avec le bouton droit de la souris et sélectionnez "exporter".
Attention aux doubles backspaces dans le chemin: \\
La seule bonne solution que j'ai trouvée qui fonctionne vraiment est la suivante: https://superuser.com/questions/1097054/Shell-context-menu-regenu-extension-doesnt-work-when-default-program- est-autre
Ajoutez des clés dans HKEY_CLASSES_ROOT\SystemFileAssociations\ your.extension \Shell\command Modifiez la dernière clé à l'aide de la commande à exécuter.
Pour moi c'était:
"C:\Program Files (x86)\GPSBabel\gpsbabel.exe" -r -i gpx -f "%1" -x simplify,count=1000 -o gpx -F "%1.gpx"
Si je l'exporte, je reçois un .reg:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\.gpx\Shell\Simplify gpx\command]
@="\"C:\\Program Files (x86)\\GPSBabel\\gpsbabel.exe\" -r -i gpx -f \"%1\" -x simplify,count=1000 -o gpx -F \"%1.gpx\""