获取CPU使用率以及磁盘空间 FILETIME m_preidleTime; FILETIME m_preKernelTime; FILETIME m_preuserTime; __int64 CompareFileTime2(FILETIME time1, FILETIME time2) { __int64 a = time1.dwHighDateTime << 32 | time1.dwLowDateTime; __int64 b = time2.dwHighDateTime << 32 | time2.dwLowDateTime; return b - a; } double CpuUsage() { FILETIME idleTime; FILETIME kernelTime; FILETIME userTime; GetSystemTimes(&idleTime, &kernelTime, &userTime); int idle = CompareFileTime2(m_preidleTime, idleTime); int kernel = CompareFileTime2(m_preKernelTime, kernelTime); int user = CompareFileTime2(m_preuserTime, userTime); if(kernel + user == 0) return 0.0; //(总的时间 - 空闲时间) / 总的时间 double cpu = abs((kernel + user - idle) * 100 / (kernel + user)); m_preidleTime = idleTime; m_preKernelTime = kernelTime; m_preuserTime = userTime; return cpu; } //在定时器里不停地更新使用率的值,当获取磁盘空间失败时则获取系统时间 //OnTimer() { CString cstrCpuUsage,cstrDiskCapcity; double dbCPU = CpuUsage(); cstrCpuUsage.Format("CPU 占用:%.2lf%%",dbCPU); unsigned _int64 i64FreeBytesToCaller; unsigned _int64 i64TotalBytes; unsigned _int64 i61FreeBytes; BOOL bResult = GetDiskFreeSpaceEx("C:\\",(PULARGE_INTEGER)&i64FreeBytesToCaller, (PULARGE_INTEGER)&i64TotalBytes, (PULARGE_INTEGER)&i64FreeBytes); if(bResult) { cstrDiskCapcity.Format("C盘空间:%.2lfGB",(float)i64FreeBytesToCaller / 1024 / 1024 / 1024); } else { CTime time = CTime::GetCurrentTime(); cstrDiskCapcity = time.Format("%Y-%m-%d %H:%M:%S"); } }
获取CPU使用率以及磁盘空间
猜你喜欢
转载自blog.csdn.net/qq_24282081/article/details/80564008
今日推荐
周排行