Comment puis-je ajouter une icône à mon élément de menu contextuel personnalisé dans Windows 7?

9

Connexe: Comment puis-je ajouter un programme au menu contextuel de tous les fichiers?

J'ai créé mon élément de menu contextuel personnalisé, et il semble fonctionner sur tous les types de fichiers - même via des liens de raccourci. (La sélection de mon option personnalisée effectue l'opération sur la cible de raccourci, pas sur le fichier .lnk.) Maintenant, je voudrais créer une icône pour la faire ressortir. Mon programme antivirus et Notepad ++ semblent avoir pu le faire, donc je sais que c'est possible. La seule question est comment?

Iszi
la source

Réponses:

10

Ouvrez regedit.exe et recherchez la clé que vous avez créée pour l'élément de menu personnalisé.

Créez maintenant une nouvelle valeur String et nommez-la Icon. Double-cliquez dessus et entrez le chemin d'accès à votre fichier d'icône personnalisé:

c: \ dossier \ icon.ico

En option, vous pouvez utiliser le fichier Windows shell32.dll comme dans mon exemple: Enregistrement

Le résultat:

Icône dans le menu contextuel personnalisé

Juste une note supplémentaire - on dirait que cette méthode fonctionne sur Windows 7 (et probablement Vista) mais l'icône n'est pas apparue lorsque j'ai testé sur Windows XP.

Siim K
la source
Merci pour la réponse et les tests sur XP. Je vais devoir essayer ça plus tard dans la journée. De plus, j'ai remarqué que votre méthode semble différer un peu de la réponse à ma question précédente. (Voir le lien dans cette question.) Dans la réponse précédente, le texte de l'élément de menu contextuel est stocké dans le nom de la clé. Dans le vôtre, il est stocké dans une valeur de chaîne dans la clé. Y a-t-il une raison pratique à la différence?
Iszi
@Iszi - je ne sais pas s'il y a une réelle différence. Je viens de trouver un tel exemple
Siim K
1
Il semble que vous ayez raison de ne pas travailler sur XP. Je ne vois pas pourquoi cela ne le serait pas, car mon AV et Notepad ++ ont toujours des icônes. HKCR\*\shellex\ContextMenuHandlersCependant, ils semblent avoir leurs fonctions couvertes , et je ne peux pas commencer à déchiffrer par moi-même comment ces touches fonctionnent.
Iszi
Testé et fonctionne sous Windows 7. Je vais continuer et publier XP comme une autre question.
Iszi
2
@ luochen1990 C'est le numéro d'index - quelle icône du fichier .dll est utilisée. Voici un tableau pour shell32.dll avec les icônes et les index correspondants: help4windows.com/windows_7_shell32_dll.shtml
Siim K
4

... Et si vous le souhaitez, vous pouvez utiliser l'icône par défaut / même que votre programme (fichier exe) utilise déjà.

Utilisez simplement quelque chose comme ci-dessous comme contenu de Iconla valeur de votre chaîne que @Slim K vous a indiqué dans sa réponse:

"C:\Path\to\YourProgram.exe",0

Sublime Text 3 n'utilise pas d'icône pour son option de menu contextuel. J'ai donc ajouté une Iconvaleur de chaîne avec le contenu que vous voyez dans la capture d'écran.

1

2

gaffeur
la source
que signifie le chiffre «0» suivant le chemin?
luochen1990
@ luochen1990 comme mentionné dans la réponse acceptée par Siim K, il s'agit du numéro d'index de l'icône dans le fichier DLL. Dans ce cas, le numéro zéro est la première icône de la DLL. Vous pouvez en savoir plus sur ce système de numérotation ici
Christian Sirolli