社区
进程/线程/DLL
帖子详情
问:如何编程监控CPU的占用情况?
wycaicai
2005-03-26 08:42:34
如何编程监控CPU的占用情况?
百分之多少?
类似任务管理器中的那个!
...全文
202
9
打赏
收藏
问:如何编程监控CPU的占用情况?
如何编程监控CPU的占用情况? 百分之多少? 类似任务管理器中的那个!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pepsi1980
2005-03-28
打赏
举报
回复
去vcbak上面去找!
liuyan4794
2005-03-27
打赏
举报
回复
up
sjcode
2005-03-26
打赏
举报
回复
学习
lemon_wei
2005-03-26
打赏
举报
回复
我这有段2000的,你可以参考,出自VC知识库,非本人所写。
--------------------------------------------------
#define SystemBasicInformation 0
#define SystemPerformanceInformation 2
#define SystemTimeInformation 3
#define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
typedef struct
{
DWORD dwUnknown1;
ULONG uKeMaximumIncrement;
ULONG uPageSize;
ULONG uMmNumberOfPhysicalPages;
ULONG uMmLowestPhysicalPage;
ULONG uMmHighestPhysicalPage;
ULONG uAllocationGranularity;
PVOID pLowestUserAddress;
PVOID pMmHighestUserAddress;
ULONG uKeActiveProcessors;
BYTE bKeNumberProcessors;
BYTE bUnknown2;
WORD wUnknown3;
} SYSTEM_BASIC_INFORMATION;
typedef struct
{
LARGE_INTEGER liIdleTime;
DWORD dwSpare[76];
} SYSTEM_PERFORMANCE_INFORMATION;
typedef struct
{
LARGE_INTEGER liKeBootTime;
LARGE_INTEGER liKeSystemTime;
LARGE_INTEGER liExpTimeZoneBias;
ULONG uCurrentTimeZoneId;
DWORD dwReserved;
} SYSTEM_TIME_INFORMATION;
LARGE_INTEGER m_liOldIdleTime;
LARGE_INTEGER m_liOldSystemTime;
unsigned long m_fNewUsges;
----------------------------------
void CMy111View::OnCpuUse()
{
// TODO: Add your command handler code here
char CpuUse[20];
SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;
SYSTEM_TIME_INFORMATION SysTimeInfo;
SYSTEM_BASIC_INFORMATION SysBaseInfo;
double dbIdleTime;
double dbSystemTime;
LONG status;
typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);
PROCNTQSI NtQuerySystemInformation;
NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(
GetModuleHandle("ntdll"),
"NtQuerySystemInformation"
);
if (!NtQuerySystemInformation)
{
return;
}
// get number of processors in the system
status = NtQuerySystemInformation(SystemBasicInformation,
&SysBaseInfo,sizeof(SysBaseInfo),NULL);
if (status != NO_ERROR)
{
return;
}
status = NtQuerySystemInformation(SystemTimeInformation,
&SysTimeInfo,sizeof(SysTimeInfo),0);
if (status!=NO_ERROR)
{
return;
}
// get new CPU's idle time
status = NtQuerySystemInformation(SystemPerformanceInformation,
&SysPerfInfo,sizeof(SysPerfInfo),NULL);
if (status != NO_ERROR)
{
return;
}
// if it's a first call - skip it
if (m_liOldIdleTime.QuadPart != 0)
{
// CurrentValue = NewValue - OldValue
dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(m_liOldIdleTime);
dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(m_liOldSystemTime);
// CurrentCpuIdle = IdleTime / SystemTime
dbIdleTime = dbIdleTime / dbSystemTime;
// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors
dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors + 0.5;
m_fNewUsges = (UINT)dbIdleTime;
sprintf(CpuUse,"%d%%",m_fNewUsges);
AfxMessageBox(CpuUse);
}
// store new CPU's idle and system time
m_liOldIdleTime = SysPerfInfo.liIdleTime;
m_liOldSystemTime = SysTimeInfo.liKeSystemTime;
}
wycaicai
2005-03-26
打赏
举报
回复
大家帮帮忙
wycaicai
2005-03-26
打赏
举报
回复
我的是2003的系统
直接添加引用ntdll.dll,添加不上。
怎么办?
就没有其他的办法了吗?
oyljerry
2005-03-26
打赏
举报
回复
调用NTDLL.DLL中未公开API NtQuerySystemInformation枚举本地系统进程
wycaicai
2005-03-26
打赏
举报
回复
NtQuerySystemInformation我怎么不能用?
我的系统是win 2003的,还有我发现有个函数GetSystemTimes(),这个函数我也不能用,他可以返回IdleTime,KernelTime和UserTime
众包更新高精地图:如何保证数据一致性?
众包更新高精地图:如何保证...阐述了部署与运维,涉及部署架构、
监控
告警及系统升级维护;还提及行业标准与规范,涵盖数据采集、处理及安全隐私保护标准,全方位为众包更新高精地图的数据一致性提供技术与规范支持。
实时
监控
与记录
CPU
占用
率脚本
简介:本文介绍了统计
CPU
占用
率的概念及其在计算机性能
监控
中的重要性。通过每秒采集
CPU
使用数据并记录至日志,我们可以识别系统性能瓶颈和进程资源消耗
情况
。文中使用VBScript脚本语言展示了如何获取和记录
CPU
使用...
Linux shell
编程
:
监控
进程
CPU
使用率并使用 perf 抓取高
CPU
进程信息
本文将介绍一个用于
监控
一组进程
CPU
使用率的Shell脚本,,当检测到某进程的
CPU
使用率超出阈值时,使用 `perf` 工具抓取该进程的详细信息。 本shell脚本为了能在普通嵌入式系统上运行做了妥协和优化。
优化你的计算机性能:如何根据
CPU
占用
率决定硬件升级
根据
CPU
占用
率的不同
情况
,可以考虑升级
CPU
、扩充内存、更新硬盘驱动器、网络带宽升级或全面升级整个系统等不同的硬件升级方案。在选择硬件升级方案时,需要综合考虑
CPU
占用
率、其他硬件指标、预算限制和系统需求等...
.NET/C# 如何获取当前进程的
CPU
和内存
占用
?如何获取全局
CPU
和内存
占用
?
都知道可以在任务管理器中查看进程的
CPU
和内存
占用
,那么如何通过 .NET 编写代码的方式来获取到
CPU
和内存
占用
呢? .NET 中提供了 PerformanceCounter类型,可以用来监视系统中大量的性能
问
题。 如果有想学习...
进程/线程/DLL
15,467
社区成员
49,170
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章