begin process at 2012 05 28 13:22:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Application WIN32 lancée par un type d'extension de fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Application WIN32 lancée par un type d'extension de fichier

jeudi 28 avril 2005 à 17:09:32 | Application WIN32 lancée par un type d'extension de fichier

Capa6T

Salut,

Bon j'ai attribué un type d'extension de fichier (.ext par exemple) à mon
application  win32 par  l'intermédiaire de la base de registre comme suit:

HKEY_CLASSES_ROOT \\ .ext \\ shell \\ open \\ command
 pis j'ai mis le chemin de mon executable comme valeur par défaut.

Ca marche très bien, losque je click sur un fichier avec l'extension .ext, mon
appli se lance normalement.

Question: Comment mon appli win32 fait elle pour savoir qu'elle a été
ouverte par l'intermédiaire du fichier .ext et réagir en fonction ?
J'ai regardé l'état du paramètre lpcmdline de la fonction WinMain mais il reste
vide l'imbécile ; tout comme  hprevinstance qui reste à zéro !

Merci d'avance si vous avez une soluce...
jeudi 28 avril 2005 à 18:20:46 | Re : Application WIN32 lancée par un type d'extension de fichier

racpp

Administrateur CodeS-SourceS
Salut,
Tu dois ajouter une autre clé:
HKEY_CLASSES_ROOT \\ .ext \\ shell \\ open \\ ddeexec
ayant pour valeur: (par défaut)   REG_SZ    ("%1")
Cette deuxième clé contient deux sous-clés:
1-application = (par défaut)   REG_SZ   MonExe
2- topic = (par défaut)  REG_SZ   file
MonExe est le nom de ton exécutable (sans extension)

Dans ta WndProc, tu traites les messages suivants:
WM_DDE_INITIATE
WM_DDE_EXECUTE
WM_DDE_TERMINATE

Voici le lien MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/dynamicdataexchange.asp

Bonne programmation.

jeudi 28 avril 2005 à 18:53:34 | Re : Application WIN32 lancée par un type d'extension de fichier

ShareVB

salut,

tu as deux choix :
 - ouverture d'une instance de prog par fichier ouvert et possiblité d'ouverture d'un seul fichier à la fois depuis l'explorateur (même quand plusieurs sélectionnés) : regarde ce que donne l'api GetCommandLine... la ligne de commande devrait suffire...
 - ouverture de plusieurs fichiers en même tant dans la même instance comme Word ou Excel, là, il faut DDE comme dit racpp (moi j'ai un source sur ça mais en Delphi...)

ShareVB
jeudi 28 avril 2005 à 19:08:55 | Re : Application WIN32 lancée par un type d'extension de fichier

Arnotic

Administrateur CodeS-SourceS
GetCommandeLine, de loin est la meilleur solution.

@+
Arnotic,
Admin CS, MVP Visual C++
jeudi 28 avril 2005 à 19:30:00 | Re : Application WIN32 lancée par un type d'extension de fichier

Capa6T

GetCommandeLine ne renvoie que le chemin + Nom Complet de l'appli.... ça ne fonctionne pas ! ça marche seulement si on passe des paramètres par la ligne de commande. Pas mon cas.

par contre la piste DDE de racpp me parrait pas mal mais j'ai malheureusement un message d'erreur m'indiquant que le fichier lancé => exemple.ext est introuvable par windows.
je pense qu'il manque une clé quelque part....

sous HKEY_CLASSES_ROOT 
\\ .ext  \\ shell \\ open \\ command \\ (par défaut)   REG_SZ   'C:\Appli.exe"
\\ .ext  \\ shell \\ open \\ ddeexec \\ (par défaut)   REG_SZ    ("%1")
\\ .ext  \\ shell \\ open \\ ddeexec \\ application \\ (par défaut)   REG_SZ   Appli
 \\ .ext  \\ shell \\ open \\ ddeexec \\ topic \\ (par défaut)   REG_SZ  file       
???? j'ai pas compris le file

 Avec ça, en cliquant sur c:\exemple.ext , j'ai un message d'erreur windows ne trouve pas c:\exemple.ext mais il lance en même temps mon application....dû à la clé command. et aucun envoi dles messages
WM_DDE_INITIATE, WM_DDE_EXECUTE, WM_DDE_TERMINATE dans mon application.
jeudi 28 avril 2005 à 19:41:15 | Re : Application WIN32 lancée par un type d'extension de fichier

Capa6T

Réponse acceptée !
Ok j'ai trouvé...c'est tout simple en fait

il suffit de placer cette seule clé:
\\ .ext  \\ shell \\ open \\ command \\ (par défaut)   REG_SZ   C:\Appli.exe %1

et ne pas oublier le %1 et ensuite GetCommandeLine ou le paramêtre  lpcmdline de la fonction WinMain renvoi bien la ligne de commande indiquant le fichier à l'origine du lancement de l'application.

Cool...
 
Merci de vous être penché sur le sujet.



Cette discussion est classée dans : fichier, application, extension, win32, ext


Répondre à ce message

Sujets en rapport avec ce message

changé curseur dans application Win32 [ par Stoomm ] Bonjour, j'aimerais chargé un curseur autre que celui par défault dans une appli Win32.Quelqu'un peut il me donner la marche à suivre svp.Merci d'avan changé curseur dans application Win32 [ par Stoomm ] Bonjour, j'aimerais chargé un curseur autre que celui par défault dans une appli Win32.Quelqu'un peut il me donner la marche à suivre svp.Merci d'avan salut,j'ai ecris une application qui gere une base des donnees et selectionne differentes informations qu'elle ecrit dans in fichier text mais le probleme est qu'il faut que ce fichier soit crypté en PGP (le logiciel est en freeware) et je dois l'envoyer [ par miminku ] patrick fonction associer à un type de fichier [ par elroulianito ] mon probleme:(application windows avec MFC)j'ai plusiures fonctions:ex fonction1() ,fonction2(),...A l'ouverture d'un fichier, je veux récupérer l'ext Imprimer un fichier depuis une application Visual C++ [ par ideschamps ] Bonjour à tous,Voilà je suis en train de développer une application en visual c++ dans laquelle je crée un fichier.Je voudrai pouvoir l'imprimer, aprè Ouverture d'un fichier *.txt [ par VCplusp ] Bonjour, je suis un débutant en Visual C++6 et je suis entraint de faire une application pour ouvrir un fichier *.txt en cliquand sur un bouton dans m modifier l'extension d'un fichier [ par oudkaramla ] bonjour j'ai un soucis:j'ai un fichier dont le nom est contenu dans une variable de type char, le probleme est que je veux changer son extensionl'exte fichier à installer pour qu'une application mfc fonctionne sur n'importe quel pc [ par gengis69 ] bonjour j'aimerai savoir quel(s) fichier(s) je dois mettre avec mon application mfc pour que le .exe fonctionne sur n'importe quel pc. Comment savoir si un fichier est ouvert par une autre application? [ par furax13 ] bonjour, je dois développer en C++ une librairie qui va, sur demande de l'utilisateur, lire un fichier sur un serveur.Ma librairie doit tester la date GetCurrentDirectory incorrect en Mode console [ par 3psilon ] Bonjour,J'ai une question toute bête certainement.Dans mon application, j'utilise GetCurrentDirectory pour créer un fichier ini.Mais, voila, si je pla


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,498 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales