URGENT : Comment obtenir la consommation du processeur ..... [Résolu]

Signaler
Messages postés
11
Date d'inscription
jeudi 24 février 2005
Statut
Membre
Dernière intervention
7 août 2009
-
Messages postés
11
Date d'inscription
jeudi 24 février 2005
Statut
Membre
Dernière intervention
7 août 2009
-
Bonjour,

J'ai deja posé cette question dans le forum système, mais peut-etre aurais-je plus de chance sur celui ci, qui doit etre plus visité.

Je suis en train de créer une appli dans laquelle je doit récupérer la consommation processeur pour un Process Id. J'ai donc récupérer l'Id dont j'ai besoin, et je voudrais savoir ce qu'il consomme en ressource (processeur). Comme le task manager de windows (le pourcentage processeur utilisé).

J'ai regardé le TASK MANAGER de 3psilon mais impossible de le comprendre :-(. Enfin la partie concernant le calcul.

Merci de m'éclairer rapidement :-)

2 réponses

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

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
11
Date d'inscription
jeudi 24 février 2005
Statut
Membre
Dernière intervention
7 août 2009

Merci bien.

Il ma fallut pas mal de recherches, mais ca devrait etre bon.

Je ne suis pas persuadé que cela marche vraiment par contre :(.

Voici mon bout de code.

int j = 0;

while(j <= 1)
{
HANDLE hProcess;
int iStatus;
FILETIME createTime;
FILETIME exitTime;
FILETIME kernelTime;
FILETIME userTime;
long processorTotUse;
long procUsed;

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pIdProcess);

iStatus = GetProcessTimes(hProcess, &createTime, &exitTime, &kernelTime, &userTime);
DWORD temp;
temp = GetLastError();
if ((iStatus) && (j == 0))
{
procUsed = userTime.dwLowDateTime+kernelTime.dwLowDateTime;
}
if ((iStatus) && (j == 1))
{
processorTotUse = ((kernelTime.dwLowDateTime+userTime.dwLowDateTime)- procUsed)/10000;
printf("%s pid %d : %02d, \n",ptsExeSoftware[pPosition]->exeSoftware ,pIdProcess, processorTotUse);
ptsExeSoftware[pPosition]->exeProcessorUse = processorTotUse;
}
CloseHandle(hProcess);
Sleep(100);
j++;
}

Une boucle pour pouvoir comparer 2 valeurs du process afin d'obtenir le pourcentage processeur. Mais j'ai quelques doutes quand aux résultats. J'ai l'impression que les resultats obtenus ne sont pas exacts.

Merci d'avance.