Probleme utilisation api de bases

chuko -  
 chuko -
Bonjour,a tous voila je me suis mis a utiliser les api windows pour ce faire je teste les plus courante dans des petit programme console en me referent a la MSDN de microsoft.Bref je bute sur l'utilisation de GetModuleHandle
qui d'apres la MSDN recupere le handle d'un processus mon probleme etant que la valeur que me renvoi cette fonction et NULL ce qui veut dire que la fonction merde mais je ne sais pas pk .Voici le code;

int main()
{

HMODULE GetModH;
LPCTSTR FileMod="C:\\Program Files\\Internet Explorer\\iexplore.exe";
GetModH = GetModuleHandle(FileMod);
if((GetModH = GetModuleHandle(FileMod))==NULL)
{
printf("erreur getmodulehandle\n");
}
else
{
printf("GetModuleHandle ok\n");
}

system("PAUSE");
return 0;
}

si quelqu'un peut m'eclairer ce serait sympa auraije mal comprit le but de cette api?

2 réponses

kilian Messages postés 8854 Statut Modérateur 1 526
 
GetModuleHandle c'est pour récupérer un handle sur un module qui est déjà chargé dans la mémoire de ton processus, comme par exemple les dll que tu utilises.

En réalité il faut que tu récupères l'id des processus en cours avec EnumProcesses

Pour chacun de ces id, tu ouvres le processus pour obtenir un handle dessus avec OpenProcess.
Ensuite grâce à ces handles tu compares le nom de chacun de tes processus avec le nom de celui que tu cherches.
Si tu cherches par rapport au chemin complet vers l'executable utilise GetProcessImageFileName, et GetModuleBaseName si c'est juste par rapport au nom du processus.

Voilà une fois que la comparaison est bonne tu as ton handle.
N'oublie pas de fermer tes handle au fur et à mesure (CloseHandle).
0
chuko
 
Desole Kilian vient juste de voir ta reponse J'espérai un peu que ça soit toi qui reponde,car comme d'habitude clair et consi les reponses merci je continu mon apprentisage des API.
0