Windows系統下獲取CPU的使用率
阿新 • • 發佈:2019-01-24
#include "stdafx.h" #include <windows.h> #include <time.h> #include <iostream> using std::endl; using std::cout; unsigned long long FileTimeSub(FILETIME ftEndTime, FILETIME ftStartTime) { unsigned long long nDeltaTime; unsigned long long nEndTime = (unsigned long long)ftEndTime.dwHighDateTime << 32 | ftEndTime.dwLowDateTime; unsigned long long nStartTime = (unsigned long long)ftStartTime.dwHighDateTime << 32 | ftStartTime.dwLowDateTime; nDeltaTime = nEndTime - nStartTime; return nDeltaTime; } unsigned long long GetCPUUsageRate() { FILETIME ftStartIdleTime, ftStartKernelTime, ftStartUserTime; FILETIME ftEndIdleTime, ftEndKernelTime, ftEndUserTime; GetSystemTimes(&ftStartIdleTime, &ftStartKernelTime, &ftStartUserTime); Sleep(1000); GetSystemTimes(&ftEndIdleTime, &ftEndKernelTime, &ftEndUserTime); unsigned long long nDeltaIdleTime = FileTimeSub(ftEndIdleTime, ftStartIdleTime); unsigned long long nDeltaKernelTime = FileTimeSub(ftEndKernelTime, ftStartKernelTime); unsigned long long nDeltaUserTime = FileTimeSub(ftEndUserTime, ftStartUserTime); cout << "kernel time: " << nDeltaKernelTime << endl; cout << "user time: " << nDeltaUserTime << endl; cout << "idle time: " << nDeltaIdleTime << endl; if (nDeltaKernelTime + nDeltaUserTime == 0) { return 0; } unsigned long long nCPUUsageRate = ((nDeltaKernelTime + nDeltaUserTime - nDeltaIdleTime) * 100) / (nDeltaKernelTime + nDeltaUserTime); return nCPUUsageRate; } int _tmain(int argc, _TCHAR* argv[]) { for (; ; ) { cout << "CPU的使用率: " << GetCPUUsageRate() << "%" << endl; Sleep(3000); } return 0; }