Ajouter une option au menu contextuel

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Ajouter une option au menu contextuel

Message 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 =)
Dernière modification par lepiaf31 le jeu. 13/mai/2010 16:27, modifié 2 fois.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Ajouter une option au menu contextuel

Message par Le Soldat Inconnu »

dans le registre
ClassRoot\.ton extension\DefaultIcon\(Par défaut) = Chemin de l'icone
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Ajouter une option au menu contextuel

Message 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 :?
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

[résolu]Ajouter une option au menu contextuel

Message 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à =)
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

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

Message par Geo Trouvpatou »

Sympa, cela peut servir un jour.
Tu devrais ouvrir un post dans le forum "Trucs et astuces".

Bye.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message par Le Soldat Inconnu »

ah oui, très sympa pour l'icône :) il faut que j'essaie
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

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

Message par lepiaf31 »

Ah au fait, ptite précision: méthode testée seulement sous Seven.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message par Le Soldat Inconnu »

Sous XP, cela n'a pas l'air de fonctionner
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

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

Message 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é.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message 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)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Ajouter une option au menu contextuel

Message 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.
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Ajouter une option au menu contextuel

Message 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 :) .
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Ajouter une option au menu contextuel

Message 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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Ajouter une option au menu contextuel

Message 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 ..
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Ajouter une option au menu contextuel

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre