Repertoire d'execution d'un .exe ?

WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005 - 15 févr. 2005 à 10:51
WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005 - 15 févr. 2005 à 15:31
Bonjour,

Je cherche a recuperer le repertoire de lancement de mon .exe meme si je fais un
::SetCurrentDirectory

qui est cense me modifier le repertoire courant. Est-ce possible ? Si oui, comment ?

Merci.

4 réponses

minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
15 févr. 2005 à 11:16
tu veux récup le dossier où se situe ton exe qui viens de se lancé ?

Donc ce cas, si c'est une appli console y a les paramètres passer à main() :

main(int argc, char* argv[])

- int argc est le nombre de paramètre passé à ton appli (au minimum 1 car il y a le chemin complet de ton exe

- char *argv[] est le tableau contenant les paramètres, il me semble que argv[0] est le chemin complet de ton exe



Si c'est en win32, je crois que c'est la paramètre lpCmdLine qui récupère (j'ai bien dit je crois car je m'en suis jamais servi)



Si c'est autre je connai encore moins


Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005
15 févr. 2005 à 13:35
Bonjour,

Merci :)

Mon langage de programmation est en C++ pour une appli win32.

D'autres idees ? (Je vais essayer ton "lpCmdLine").
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
15 févr. 2005 à 14:00
salut,

GetModuleFileName(0, buffer, sizeof(buffer)); ou buffer est un tableau
de char (char buffer[MAX_PATH];), te donne le nom complet de
l'executable.

à toi ensuite de modifier legerement ca pour ne recuperer que le dossier.

ex: dans buffer tu recuperes C:\windows\prog.exe

essaie ca:

#include <windows.h>

...

void AfficheRepCourant()

{
char buffer[MAX_PATH];

buffer[0] = 0; // en cas de probleme avec GetModuleFileName ....
char* c = buffer + GetModuleFileName(0, buffer, sizeof(buffer)); // on se positionne a la fin de la chaine

while (*c != '\\') c--; // on balaie la chaine a l'envers jusqu'a trouver un \

*c = 0; // on tronque la chaine a cet endroit

MessageBox(0, buffer, "repertoire courant", 0);

}

Comme tu l'as dit, GetCurrentDirectory ne renvoie pas forcement le
chemin de l'exe car on peut le changer avec SetCurrentDirectory.



a++
0
WiShYs Messages postés 20 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 4 juillet 2005
15 févr. 2005 à 15:31
Ca marche impeccablement bien !

Merci pour ton aide !
0
Rejoignez-nous