Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question triviale: Qui suis-je ?

4 réponses
Avatar
Roger
Bonjour,

Trivial certainement pour un non débutant !

J'écris un petit programme en C++ qui utilise l'API 32 sous Windows XP, il
commence donc par:

int APIENTRY WinMain( HINSTANCE W_n0inst, HINSTANCE W_n0precinst, LPTSTR
W_CmdLine, int W_cdeaffich)

qui se contente ensuite de créer une fenêtre par:

clefenetre = CreateWindow (nomclassefenetre, titrefenetre, WS_CAPTION |
WS_OVERLAPPEDWINDOW, 50, 50, 640, 470, NULL, NULL, n0instance, NULL);

rien de plus ordinaire donc.

Sauf qu'à un certain point du programme je voudrais savoir qui je suis,
c'est à dire le nom du programme qui est entrain de s'exécuter ainsi que son
chemin d'accès sur le disque ! (choses que moi je sais évidemment, mais que
je voudrais retrouver par programmation)

Depuis ce matin, je parcours les fonctions de l'API32 et je n'ai toujours
pas trouvé quelle est ou quelles sont la ou les fonctions qui peuvent me
donner ces deux infos.

Merci pour votre aide.

4 réponses

Avatar
Roger
Ok, j'ai la réponse:
GetModuleFileName
Merci
Avatar
Jean-Claude BELLAMY
Le vendredi 11/03/2011 15:21:26, Roger a écrit dans le message
<news:4d7a2f4a$0$7680$ ce qui suit :
[...] je voudrais savoir qui je suis, c'est
à dire le nom du programme qui est entrain de s'exécuter ainsi que son chemin
d'accès sur le disque ! (choses que moi je sais évidemment, mais que je
voudrais retrouver par programmation)




C'est contenu tout bêtement dans le paramètre de rang 0!

argv[0] en C/C++
paramstr(0) en Delphi
$0 en Perl
%0 dans un batch
...

--

May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP Expert IT Pro]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Avatar
Roger

C'est contenu tout bêtement dans le paramètre de rang 0!

argv[0] en C/C++
paramstr(0) en Delphi
$0 en Perl
%0 dans un batch
...



Merci, mais je suis sous windows par un programme dont le point d'entrée
est:
int APIENTRY WinMain( HINSTANCE W_n0inst, HINSTANCE W_n0precinst, LPTSTR
W_CmdLine, int W_cdeaffich)

et non pas: void main(void)

Ai-je accès quand même à argv[0] ?

Le GetModuleFileName de l'API32 fonctionne
Avatar
Christian ASTOR
Roger a écrit :

C'est contenu tout bêtement dans le paramètre de rang 0!

argv[0] en C/C++
paramstr(0) en Delphi
$0 en Perl
%0 dans un batch
...



Merci, mais je suis sous windows par un programme dont le point d'entrée
est:
int APIENTRY WinMain( HINSTANCE W_n0inst, HINSTANCE W_n0precinst, LPTSTR
W_CmdLine, int W_cdeaffich)
et non pas: void main(void)

Ai-je accès quand même à argv[0] ?
Le GetModuleFileName de l'API32 fonctionne



Oui, c'est quasiment pareil (__argv[] ou __wargv[] en Unicode) ou
GetCommandLine()
Mais GetModuleFileName() est en effet la façon standard "Win32"