(win32) Quel est le fichier exécuté ?

Signaler
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015
-
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
-
Bonjour,

disons, que j'ai 2 fichiers exe avec le même nom qui affiche la même chose mais situés dans 2 dossiers differents :
c:\test01\test01.exe

c:\test02\test02.exe

(avec test01.exe = test02.exe, test02 est seulement test01 renommé)

j'aimerais savoir comment savoir le(s)quel(s) sont éxécutés, car FindWindow ne peut m'aider dans ce cas

merci

7 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
GetModuleFilename()

ciao...
BruNews, MVP VC++
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

GetModuleFilename retourne le nom du fichier qui est en cours d'exécution, non ?

si j'ai un 3eme programme qui veut savoir, si c'est test01 ou test02 qui est exécuté....
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
A quel moment ?
Faudra prévoir un mode de communication inter processus.

ciao...
BruNews, MVP VC++
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Tu chopes le handle de la fenêtre que tu veux tester (avec EnumWindows par ex.);
Tu récupères le pID (GetWindowThreadProcessId);
Tu ouvres le processus (OpenProcess, mode READ et QUERRY_INFO)
Tu chopes le handle du module de base (EnumProcessModules);
Et enfin tu utilises GetModuleFileName pour avoir le nom complet.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
juju12 >> GetModuleFileName() ne fonctionne qu'avec le processus courant. Il faudra plutôt utiliser GetModuleFileNameEx(). Pour trouver le handle de la fenêtre, FindWindow() ou FindWindowEx() peuvent suffire. L'utilisation de EnumWindows() est moins pratique.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
OK mais tout ceci est bien lourd pour une si petite info.
L'exécuté pourrait retourner son nro de version et lanceur lirait GetExitCodeProcess() ou l'exécuté écrirait l'info dans un fichier que lanceur irait lire.

ciao...
BruNews, MVP VC++
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
raccp >> oui désolé; pour FindWindow, bah ca dépend à partir de quoi on cherche la fenêtre. Si on n'a rien d'autre que le nom du processus...
Brunews >> peut-être n'a-t'il pas accès au code source de l'exécutable, par ex. chercher si un processus qui a le nom d'un processus système n'est pas un virus qui a emprunté le nom...