Ajouter une entrée au menu contextuel dans l'explorateur Windows

Résolu
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 - 21 août 2005 à 19:51
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 - 22 août 2005 à 10:14
Violent Ken

Salut tout le monde !
En fait, j'aimerais pouvoir ajouter une entrée dans le menu contextuel dans l'explorateur de Windows.
Je m'explique. Quand on clique avec le bouton droit sur un fichier (dans explorer), un menu apparaît (Ouvrir, Couper, Copier, Propriétés...). Et j'aimerais pouvoir afficher "Ouvrir avec MonApplication" dans ce menu, pour tout les types de fichiers, et en affichant une icone 16*16 de mon choix à gauche.
Merci, et @+

10 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
22 août 2005 à 00:29
Dans ce cas tu dois transmettre (via ce que tu mets dans le registre pour ton appli) à ton exe un argument spécifique, du style la chaine "Tu demarres via le menu contextuel" et tu regardes dans ton code de ta Main() si par hasard Command$ ne serait pas égal à "Tu demarres via le menu contextuel".
Le seul hic c'est que si un gignol tapes ceci sur une ligne de commande dos
"Tonappli.exe Tu demarres via le menu contextuel", et ben tu va te lourder en beauté !!
Ce qu'il faut bien te dire, c'est que le menu contextuel ne lance pas autrement ton appli que ce que l'on pourrait faire via une ligne de commande DOS. Le seul avantage du menu contextuel, c'est que windows est en mesure d'insérer un nom de fichier en guise de paramètre : Il remplace le %1 que tu as palcé en registre pour cette entrée du menu contextuel par le nom du fichier sélectionné par l'utilisateur.
C'est un simple raccourci pour l'utilisateur (qui est trop niai pour taper la ligne de commande DOS), mais pour toi, cela revient strictement au même.

Et puis de toute, façon, je ne comprend pas bien poruquoi tu veux faire le distinguo entre les diférent mode de lancement ???

Christophe.
3
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
22 août 2005 à 09:41
Pour les trois mode différents de démarrage, c'ets ce que ton appli recoit dans le Command$ qui lui fait faire la différence .. a toi de bien prévoir ce que tu mets dans le registre.
Pour l'icone, je ne sait pas comment on fait cela. Je suppose que c'est dans le registre, mais je n'ai rien trouvé de concluant sur ce sujet ...

Christophe.
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 août 2005 à 19:59
Fait une recherche sur le site, tu y trouvera les mêmes questions sur le forum ainsi que des sources qui en parlent...

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
21 août 2005 à 20:23
Violent Ken

Darksidious, j'ai en effet pas été très clair...
Je connaît les path à foutre dans Regedit, mais le problème c'est : Comment gérer mon programme une fois qu'il est ouvert par la commande "Ouvrir MonApplication" ?Je ne veut pas simplement éxécuter mon application, mais ouvrir une form spécifique de mon programme.
Et sur le forum, aucune réponse concrête a ce problème...
Et sur les sources, un exemple de Clementino, mais difficile de l'adapter à mon programme...
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Pingouin Messages postés 262 Date d'inscription lundi 26 août 2002 Statut Membre Dernière intervention 24 août 2005
21 août 2005 à 21:13
Il te faut utiliser la variable command$, tu trouveras plein de renseignement ici ou meme dans la documentation de VB

The Pingouin
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
21 août 2005 à 21:32
Violent Ken

Merci, mais j'ai déjà utilisé la variable command$.
En fait, mon programme s'utilise de trois façons différentes :
-Ouverture traditionnelle
-Ouverture avec un fichier (donc command$)
-Ouverture avec menu contextuel
Le programme doit agir différemment pour chacun des trois cas, donc je ne peut pas réutiliser Command$.
@+
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 août 2005 à 22:30
Qd l'utilisateur va déclencher l'action correspondant a ton appli dans le menu contextuel, c'est ce que tu va avoir collé dans le registre qui va dire à windows de quel façon il doit transmettre le nom du fichier.
Dans le regedit tu mettras par exemple ceci :
"c:\program files\mon app\monapp.exe" "%1"

Et donc, windows transmettra le nom du fichier (représenté par %1) en tant que 1er argument de la ligne de commande à ton exe. Tu le récupérera donc via Command$ dans ton code VB ...
Je ne comprend pas bien pourquoi tu refuses d'utiliser Command$ ...

Christophe.
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
21 août 2005 à 22:43
Violent Ken

En fait, je comprend pas très bien l'utilisation de "%1".
Mon programme commence comme çà :

Sub Main()
if command$=vbnullstring then pfm.show:exit sub 'ouverture traditionnelle, montre la form principale
term$=lcase(Terminaison(command$)) 'renvoie l'extension du fichier qui ouvre mon programme
if term$="jpeg" or term$="jpg" or term$="bmp" or term$="gif" then form_image.show:exit sub 'traite les fichiers images qui ont ouverts mon programme
if term$="mpeg" or term$="avi" then form_video.show:exit sub 'traite les fichiers vidéos qui ont ouverts mon programme

'fichier ni vidéo ni image, donc on montre la form principale, comme si le programme avait été ouvert traditionnellement
pfm.show
exit sub

Ou est ce que je doit mettre des lignes de code, pour que quand on clique sur "OuvriravecMonapplication" sur le menu contextuel d'un fichier, on est par exemple form_resultat_menu_contextuel.show ?
Merci d'avance, et j'espère que le problème est posé clairement.
@+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
22 août 2005 à 09:34
Violent Ken

Merci Crenaud76 pour ta réponse ! J'ai compris, maintenant !
Pour ta remarque quant à l'utilité de la distiction entre les différents modes; voici ma réponse: prend par exemple un antivirus (quelconque). Démarre ton antivirus "classiquement". Tu verras apparaître la form principale. Ensuite démarre ton antivirus avec un fichier : tu verras un message du style "ne peut ouvrir ce type de fichier", ou alors la form principale s'affichera également. Et exécute maintenant le programme par la troisième méthode, en cliquant sur "Rechercher des vrus dans le fichier" sur le menu contextuel, et là, le menu d'analyse se lance.
3 modes de lancement, 3 résultats différents. Eh bien mon programme, c'est pareil !
Une dernière question : tu saurais pas comment afficher une icone, dans le menu contextuel (icone 16*16 à gauche de "ouvriravecmonapplication") ?
Merci, @+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
22 août 2005 à 10:14
0
Rejoignez-nous