Probl�me d'utilisation structure PROCESSENTRY 32
Bonjour,
Dans le cadre de mon projet BTS, j'ai une m�thode de mon application charg�e de d�tecter si un processus .exe est d�marr�e ou non. Pour cela, elle lit la liste des processus ouverts dans Windows, parcoure cette liste et si le nom est identique � celui pass� en param�tre, elle r�cup�re son PID et me renvoie un bool�en.
Sauf qu'elle n'arrive pas � trouver le processus.
Apr�s de multiples tests, j'ai trouv� la cause. Le membre de la structure PROCESSENTRY32 charg�e de renvoy� le nom du process me renvoie une adresse et je ne comprend pas pourquoi.
Cette application est d�velopp�e en C++ orient� objet sous Visual Studio 2010. La fonction incrimin�e a �t� test� avec succ�s sous Codeblocks en C++ mais non orient� objet (toutes les fonctions �taient dans le fichier main).
C'est suite � ces tests que j'ai pass� le programme en objet.
Voici la m�thode :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| bool Serveur::etatProcess(const char *nom)
{
DWORD pid = 0;
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 process;
ZeroMemory(&process, sizeof(process)); // rempli la zone mémoire de 0
process.dwSize = sizeof(process);
if(Process32First(snapshot, &process))
{
do
{
// process.szExeFile renvoie une adresse, la comparaison ne peux donc se faire
// pourquoi ?
if(strcmp((char *)process.szExeFile, nom) == 0) // 0 => comparaison ok
{
pid = process.th32ProcessID;
break;
}
}while(Process32Next(snapshot, &process));
}
CloseHandle(snapshot);
if (pid != 0)
{
return true;
}
else
{
return false;
}
} |
merci de votre aide:ccool: