資源簡介
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個文件信息
- 上一篇:一個完整的生產等值線的代碼
- 下一篇:道格拉斯算法C++實現
評論
共有 條評論