cs_Capa6T
Messages postés36Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 août 2012
-
28 avril 2005 à 17:09
cs_Capa6T
Messages postés36Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 août 2012
-
28 avril 2005 à 19:41
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 !
cs_Capa6T
Messages postés36Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 août 20123 28 avril 2005 à 19:41
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.
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 28 avril 2005 à 18:53
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...)
cs_Capa6T
Messages postés36Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 août 20123 28 avril 2005 à 19:30
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.