#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;
}
Windows系统下获取CPU的使用率
最新推荐文章于 2024-08-02 14:05:11 发布