资源简介

c++获取cpu使用率(包含系统和单进程)含多个例子 c++获取cpu使用率(包含系统和单进程)含多个例子 c++获取cpu使用率(包含系统和单进程)含多个例子

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “CpuUsage.h“

CCpuUsage::CCpuUsage()
{
//
m_hWnd = NULL;
m_nRefreshInterval = 1000;
m_nTimerID = 1000;
m_nCpuUsage = 0;

//
memset(&liOldIdleTime     0 sizeof(LARGE_INTEGER));
memset(&liOldSystemTime   0 sizeof(LARGE_INTEGER)); 

//   
NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(
GetModuleHandle(/*(LPCWSTR)*/(LPCTSTR)_T(“ntdll“))  “NtQuerySystemInformation“);  //20100821modify to mutilybutes

if (!NtQuerySystemInformation)
return;

// get number of processors in the system
status = NtQuerySystemInformation(SystemBasicInformation&SysbaseInfosizeof(SysbaseInfo)NULL);
if (status != NO_ERROR)
return;

// create control for timer
m_hWnd = ::CreateWindow(_T(“static“) _T(““) 0 0 0 0 0 NULL NULL 0 NULL);
::SetWindowLong(m_hWnd  GWL_USERDATA  (long)(this) );

TIMERPROC tp = (TIMERPROC)CalcCpuUsage;
SetTimer(m_hWnd  m_nTimerID m_nRefreshInterval tp);

}

CCpuUsage::~CCpuUsage()
{
KillTimer(m_hWnd  m_nTimerID);
DestroyWindow(m_hWnd);
}

void CCpuUsage::CalcCpuUsage(
HWND hwnd
UINT uMsg
UINT_PTR idEvent
DWORD dwTime

{
CCpuUsage* pCpu = (CCpuUsage*)::GetWindowLong(hwnd  GWL_USERDATA);

if ( pCpu )
{
pCpu->OnTimer();
}

}

int CCpuUsage::OnTimer()
{
status = NtQuerySystemInformation(SystemTimeInformation&SysTimeInfosizeof(SysTimeInfo)0);

if (status!=NO_ERROR)
return 0;

// get new CPU‘s idle time
status = NtQuerySystemInformation(SystemPerformanceInformation&SysPerfInfosizeof(SysPerfInfo)NULL);
if (status != NO_ERROR)
return 0;

// if it‘s a first call - skip it
if (liOldIdleTime.QuadPart != 0)
{
// CurrentValue = NewValue - OldValue
dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);

// CurrentCpuIdle = IdleTime / SystemTime
dbIdleTime = dbIdleTime / dbSystemTime;

// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors
dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysbaseInfo.bKeNumberProcessors + 0.5;

m_nCpuUsage = (UINT)dbIdleTime;
}

// store new CPU‘s idle and system time
liOldIdleTime = SysPerfInfo.liIdleTime;
liOldSystemTime = SysTimeInfo.liKeSystemTime;

// wait one second

return 0;
}

int CCpuUsage::GetCpuUsage()
{
return m_nCpuUsage;
}

int CCpuUsage::SetRefreshInterval(int milli_sec)
{
m_nRefreshInterval = milli_sec;

if ( m_hWnd )
{
TIMERPROC tp = (TIMERPROC)CalcCpuUsage;
SetTimer(m_hWnd m_nTimerID m_nRefreshInterval tp);
}

return 0;

}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1464  2009-09-04 19:03  LocalProcessInfo2\LocalProcessInfo2\LocalInfo.cpp

     文件        294  2009-09-04 18:39  LocalProcessInfo2\LocalProcessInfo2\LocalInfo.h

     文件      59476  2009-09-05 15:18  LocalProcessInfo2\LocalProcessInfo2\LocalProcessInfo2.aps

     文件       2227  2009-08-31 15:20  LocalProcessInfo2\LocalProcessInfo2\LocalProcessInfo2.cpp

     文件        570  2009-08-31 15:20  LocalProcessInfo2\LocalProcessInfo2\LocalProcessInfo2.h

     文件       6095  2009-09-05 15:18  LocalProcessInfo2\LocalProcessInfo2\LocalProcessInfo2.rc

     文件       5919  2009-09-04 18:51  LocalProcessInfo2\LocalProcessInfo2\LocalProcessInfo2.vcproj

     文件       1409  2012-09-02 18:50  LocalProcessInfo2\LocalProcessInfo2\LocalProcessInfo2.vcproj.SH-123.wang.user

     文件       1427  2009-09-05 15:51  LocalProcessInfo2\LocalProcessInfo2\LocalProcessInfo2.vcproj.THINKIT-937A9F7.sun.user

     文件       5712  2009-09-05 15:41  LocalProcessInfo2\LocalProcessInfo2\LocalProcessInfo2Dlg.cpp

     文件       1087  2009-08-31 18:32  LocalProcessInfo2\LocalProcessInfo2\LocalProcessInfo2Dlg.h

     文件       7390  2004-07-07 02:23  LocalProcessInfo2\LocalProcessInfo2\perfmon.cpp

     文件       3365  2009-09-05 15:49  LocalProcessInfo2\LocalProcessInfo2\perfmon.h

     文件       4439  2009-08-31 15:20  LocalProcessInfo2\LocalProcessInfo2\ReadMe.txt

     文件      21630  2005-08-12 16:37  LocalProcessInfo2\LocalProcessInfo2\res\LocalProcessInfo2.ico

     文件        408  2009-08-31 15:20  LocalProcessInfo2\LocalProcessInfo2\res\LocalProcessInfo2.rc2

     文件        919  2009-08-31 16:26  LocalProcessInfo2\LocalProcessInfo2\resource.h

     文件        217  2009-08-31 15:20  LocalProcessInfo2\LocalProcessInfo2\stdafx.cpp

     文件       2864  2009-08-31 15:20  LocalProcessInfo2\LocalProcessInfo2\stdafx.h

     文件        916  2009-08-31 15:20  LocalProcessInfo2\LocalProcessInfo2.sln

     文件      15469  2010-11-23 10:14  ExeTopFive\ExeTopFive\CpuFive.cpp

     文件       1656  2010-09-06 10:35  ExeTopFive\ExeTopFive\CpuFive.h

     文件       1154  2010-09-06 10:28  ExeTopFive\ExeTopFive\ExeTopFive.cpp

     文件       4766  2012-09-02 18:51  ExeTopFive\ExeTopFive\ExeTopFive.vcproj

     文件       3956  2010-09-06 10:35  ExeTopFive\ExeTopFive\ExeTopFive.vcproj.7.10.old

     文件       1409  2012-09-02 18:53  ExeTopFive\ExeTopFive\ExeTopFive.vcproj.SH-123.wang.user

     文件       1009  2010-09-05 07:57  ExeTopFive\ExeTopFive\ReadMe.txt

     文件        214  2010-09-05 07:57  ExeTopFive\ExeTopFive\stdafx.cpp

     文件        195  2010-09-05 07:57  ExeTopFive\ExeTopFive\stdafx.h

     文件        890  2012-09-02 18:51  ExeTopFive\ExeTopFive.sln

............此处省略37个文件信息

评论

共有 条评论