Ajouter une entrée au menu contextuel dans l'explorateur Windows [Résolu]

Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Dernière intervention
26 octobre 2010
- 21 août 2005 à 19:51 - Dernière réponse :
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
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 @+
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Dernière intervention
9 juin 2006
22 août 2005 à 00:29
3
Merci
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.

Merci crenaud76 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Meilleure réponse
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Dernière intervention
9 juin 2006
22 août 2005 à 09:41
3
Merci
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.

Merci crenaud76 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
21 août 2005 à 19:59
0
Merci
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/
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Dernière intervention
26 octobre 2010
21 août 2005 à 20:23
0
Merci
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...
@+
Messages postés
262
Date d'inscription
lundi 26 août 2002
Dernière intervention
24 août 2005
21 août 2005 à 21:13
0
Merci
Il te faut utiliser la variable command$, tu trouveras plein de renseignement ici ou meme dans la documentation de VB

The Pingouin
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Dernière intervention
26 octobre 2010
21 août 2005 à 21:32
0
Merci
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$.
@+
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Dernière intervention
9 juin 2006
21 août 2005 à 22:30
0
Merci
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.
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Dernière intervention
26 octobre 2010
21 août 2005 à 22:43
0
Merci
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.
@+
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Dernière intervention
26 octobre 2010
22 août 2005 à 09:34
0
Merci
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, @+
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Dernière intervention
26 octobre 2010
22 août 2005 à 10:14
0
Merci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.