资源简介
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++实现
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
评论
共有 条评论