资源简介
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++实现
相关资源
- 道格拉斯算法C++实现
- C++封装的一个跨平台的线程类和锁类
- C++信号量实现互斥爸爸女儿儿子苹果
- grpc c++
- 学生成绩管理系统(MFC)
- C++开源日志库Easylogging++ V9.80版本源码
- ArcGis Engine C++ 开发教程
- Visual C++游戏编程基础 PDF+源码
- 基于遗传算法的最短路径选择问题
- 计算器 VC++
- 教学设备管理系统C++课程设计
- 定义一个Date 类,数据成员有year,m
- MFC 快速导出数据至ExcelSaveToExcel组件
- C++模拟退火算法求二维函数极值
- c++医院病房管理系统
- C++对任意阶的实对称矩阵求特征值和
- 图书管理系统C++实现
- 李龙澍 C++ 程序设计课件
- 学籍信息管理系统 C++ 代码
- C++机房机位预约管理
- VC++Spin(旋转)控件用法
- SHA1加密算法的c++实现
- 导引头模型仿真
- ROBOOP --机器人正逆解C++版本开源开源
- C++实现日志库
- 基于IE浏览器的源代码
- C++音视频即时通讯源代码
- VC++摄像头视频采集及回放源程序
- 模拟退火遗传算法的C++程序
- c语言五子棋代码
评论
共有 条评论