Vous pouvez utiliser des compteurs de performance.
Voir "Using the PDH Functions to Consume Counter Data"
Le compteur spécifique que vous devez utiliser est temps processeur:
temps processeur est le pourcentage de temps que le processeur exécute un thread actif. Ce compteur a été conçu comme un indicateur principal de l'activité du processeur. Il est calculé en mesurant le temps que le processeur passe à exécuter le thread du processus Idle - dans chaque intervalle d'échantillonnage et en soustrayant cette valeur de 100%. (Chaque processeur a un thread inactif qui consomme des cycles quand aucun autre thread n'est prêt à fonctionner). Il peut être considéré comme le pourcentage de l'intervalle d'échantillonnage passé à faire un travail utile. Ce compteur affiche le pourcentage moyen de temps occupé observé pendant l'intervalle d'échantillonnage. Il est calculé en surveillant l'heure à laquelle le service était inactif, puis en soustrayant cette valeur de 100%.
#define _PROCESSOR_COUNTER _T("\\Processor(0)\\% Processor Time")