Page 1 sur 2

Ajouter une option au menu contextuel

Publié : sam. 01/mai/2010 13:58
par lepiaf31
Bonjour, je cherche à ajouter une option au menu contextuel. En fait je voudrais avoir un nouveau menu lorsque je fais un clic droit sur un fichier avec une extension particulière. Comme le fait winrar par exemple:

Image

J'ai trouvé ce topic qui permet de faire ce que je veux : http://www.purebasic.fr/french/viewtopic.php?t=7237 .
Mais j'aimerais bien y ajouter une icone (comme sur l'image). Mais après plusieurs recherches je n'ai pas trouvé comment il fallait faire. Si quelqu'un à une piste ca serait sympa =)

Re: Ajouter une option au menu contextuel

Publié : sam. 01/mai/2010 16:26
par Le Soldat Inconnu
dans le registre
ClassRoot\.ton extension\DefaultIcon\(Par défaut) = Chemin de l'icone

Re: Ajouter une option au menu contextuel

Publié : sam. 01/mai/2010 17:27
par lepiaf31
Cela change l'icone associée à l'extension il me semble. Moi je cherche à changer l'icone d'une option du menu contextuel (quand on fait un clic droit sur un fichier) et non pas celle du fichier en lui-même. Je ne sais pas si j'ai été clair :?

[résolu]Ajouter une option au menu contextuel

Publié : lun. 03/mai/2010 17:40
par lepiaf31
Bon j'ai réussi à faire ce que je voulais =). Le but est de rajouter une option du menu contextuel d'un fichier avec une extension particulière (+ une icone). Je vous montre le résultat et je vous explique comment faire:
Image

Bon en fait c'est plutot simple à faire:
1) il faut aller dans le registre à la clé HKEY_CLASSES_ROOT\.extensionQueVousVoulez et lire la valeur par défaut
2) puis il faut aller dans HKEY_CLASSES_ROOT\laValeurTrouvée\shell
3) Créer une nouvelle clé HKEY_CLASSES_ROOT\laValeurTrouvée\shell\Titre du menu
4) Créer une nouvelle clé: HKEY_CLASSES_ROOT\laValeurTrouvée\shell\Titre du menu\Command
5) On ajoute l'action en modifiant la valeur par défaut de la dernière clé créer. Par exemple: C:\Program Files (x86)\Notepad++\notepad++.exe "%1"
6) On ajoute l'icone, pour cela on ajoute une valeur à la clé HKEY_CLASSES_ROOT\laValeurTrouvée\shell\Titre du menu qui portera le nom Icon et qui sera de type REG_SZ et dont la valeur vaudra l'emplacement de l'icone.

Voilà =)

Re: [Résolu]Ajouter une option au menu contextuel

Publié : mar. 04/mai/2010 16:33
par Geo Trouvpatou
Sympa, cela peut servir un jour.
Tu devrais ouvrir un post dans le forum "Trucs et astuces".

Bye.

Re: [Résolu]Ajouter une option au menu contextuel

Publié : mar. 04/mai/2010 17:08
par Le Soldat Inconnu
ah oui, très sympa pour l'icône :) il faut que j'essaie

Re: [Résolu]Ajouter une option au menu contextuel

Publié : mar. 04/mai/2010 17:16
par lepiaf31
Ah au fait, ptite précision: méthode testée seulement sous Seven.

Re: [Résolu]Ajouter une option au menu contextuel

Publié : mar. 04/mai/2010 19:21
par Le Soldat Inconnu
Sous XP, cela n'a pas l'air de fonctionner

Re: [Résolu]Ajouter une option au menu contextuel

Publié : mar. 04/mai/2010 21:43
par lepiaf31
Arf pas cool, bon va falloir que je récupère mon vieux PC pour faire des tests sous XP. Ca serait cool d'avoir une compatibilité.

Re: [Résolu]Ajouter une option au menu contextuel

Publié : mer. 05/mai/2010 8:54
par Le Soldat Inconnu
Une vitual box ne serait pas plus simple :wink: c'est ce que j'ai pour tester mes softs sous Vista (pas encore fait pour seven)

Re: Ajouter une option au menu contextuel

Publié : jeu. 13/mai/2010 16:30
par lepiaf31
Bon et bien je n'arrive pas à rajouter une icone sous Xp :( . Pourtant c'est possible mais bon ..
Peut-etre que c'est faisable avec les APIs (peut-etre ici ya des fonctions IContextMenu, ect) mais bon l'anglais et moi, c'est pas encore ça.

Re: Ajouter une option au menu contextuel

Publié : dim. 16/mai/2010 9:55
par lepiaf31
Bon alors j'ai avancé dans mes recherches. J'ai pris l'exemple de winrar.
Quand on va à la clé HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\WinRAR on trouve ceci {B41DB860-64E4-11D2-9906-E49FADC173CA} comme valeur par défaut (un CLSID).
En faisant une recherche de ce CLSID dans le registre je suis tombé sur cà:
HKEY_CLASSES_ROOT\CLSID\{B41DB860-64E4-11D2-9906-E49FADC173CA}\InProcServer32 avec pour valeur par défaut :C:\Program Files (x86)\WinRAR\rarext.dll
Et quand on ouvre cette dll avec ResourceHacker on tombe sur des choses intéressantes :
dans Bitmap je retrouve l'icone affichée dans le menu contextuel, dans String Table on retrouve le texte affiché dans le menu contextuel (mais en anglais). On retrouve aussi un fichier xml et quelques autres trucs..

Du coup je suis allé voir le doc MSDN (pfff ..) et voilà ce que j'ai trouvé ceci.
Problème: je ne sais pas ce qu'est un "Handler" et encore moins comment le construire alors si quelqu'un à des infos je suis preneur :) .

Re: Ajouter une option au menu contextuel

Publié : dim. 16/mai/2010 12:00
par Ar-S
Nous pouvons définir un handler comme une commande qui se déclenche quand l'utilisateur accomplit une action définie.
Voilà une page intéressante : http://www.hotline-pc.org/menucontextuel.htm

Re: Ajouter une option au menu contextuel

Publié : dim. 16/mai/2010 16:03
par lepiaf31
Merci pour le lien.

Bon j'ai un peu fouillé mais j'arrive toujours pas à mettre une fichue icone dans le menu contextuel d'un fichier. Comme je sais que Avast j'ai regardé les clés du registre et voilà ce que j'y ais trouvé:
HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\WinRAR
(par defaut) = {472083B0-C522-11CF-8763-00608CC02F24}

HKEY_CLASSES_ROOT\CLSID\{472083B0-C522-11CF-8763-00608CC02F24}
(par defaut) = avast

HKEY_CLASSES_ROOT\CLSID\{472083B0-C522-11CF-8763-00608CC02F24}\InProcServer32
(par defaut) = C:\Program Files (x86)\Avast\ashShA64.dll
ReleaseName = C:\Program Files (x86)\Avast\ashShA64.dll
ThreadingModel = Apartment

HKEY_CLASSES_ROOT\avast\ShellEx\ContextMenuHandlers
(par defaut) = {472083B0-C522-11CF-8763-00608CC02F24}
A mon avis tout ce joue dans la dll: C:\Program Files (x86)\Avast\ashShA64.dll. En effet, lorsqu'on regarde les ressources de ashShA64.dll, on retrouve bien l'icone qui est affichée dans le menu contextuel. Mais je ne sais pas du tout comment est contruite cette dll ..

Re: Ajouter une option au menu contextuel

Publié : dim. 16/mai/2010 20:56
par Le Soldat Inconnu
a mon avis, de mémoire par rapport au menu classique sous XP, il faut un BMP de dimension 13*13