如何查process的cpu占用率、线程数?

gofire 2004-06-07 09:23:25
其实是要做一个查询出当前系统下所有的process相关信息的东西,列举process的方法很多,无论是enumprocesses还是那个什么snapshot都搞得定,然后可以轻松获得process的handle,那么怎么查process的cpu占用率呢?
NtQuerySystemInformation我还没有研究过,如果有高人比较熟的,给个sample给我看一下,多谢.
另外的话,PDH(Performance Data Helper)好像也可以,但是也不大会耍,如有高人会的话,请指点.
...全文
392 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lianglp 2004-06-07
  • 打赏
  • 举报
回复
PdhEnumObjectItems()得到查询的对象
GlobalAlloc()分配保存的信息缓冲
PdhAddCounter()
PdhGetFormattedCounterValue()取得信息
PdhCloseQuery()关闭
jjdzyj 2004-06-07
  • 打赏
  • 举报
回复
void CAutoShutDownDlg::GetCpuUsage()
{

// get system time
status = NtQuerySystemInformation(3,&SysTimeInfo,sizeof(SysTimeInfo),0);
if (status!=NO_ERROR)
{
MessageBox("failed to get system time!");
}

// get cpu idle time
status = NtQuerySystemInformation(2,&SysPerfInfo,sizeof(SysPerfInfo),NULL);
if (status != NO_ERROR)
{
MessageBox("failed to get cpu time");
}
if (liOldIdleTime.QuadPart != 0)
{
// new cpu Time = NewTime - OldTime
dbCpuIdleTime =LI64ToDouble(SysPerfInfo.liIdleTime)-LI64ToDouble(liOldIdleTime);
dbSysTime =LI64ToDouble(SysTimeInfo.liKeSystemTime)-LI64ToDouble(liOldSysTime);

//get cpu usage
unCpuUsage=100 - 100*(dbCpuIdleTime/dbSysTime)/(double)SysBaseInfo.bKeNumberProcessors+0.5;
}

wsprintf(CpuUsage,"%d%%",(UINT)unCpuUsage);
m_sCpuUsage = (CString)CpuUsage;

//if cpu usage ==0% then shutdown os
if(bSetAuto && (UINT)dbCpuIdleTime==0)
{
//MessageBox("shutdown os!");
ShutDown();
}
// store new cpu idle and system time
liOldIdleTime = SysPerfInfo.liIdleTime;
liOldSysTime = SysTimeInfo.liKeSystemTime;
}

double CAutoShutDownDlg::LI64ToDouble(LARGE_INTEGER li)
{
return (double)((li.HighPart) * 4.294967296E9 + li.LowPart);
}
会思考的草 2004-06-07
  • 打赏
  • 举报
回复
NtQuerySystemInformation
baojian88888 2004-06-07
  • 打赏
  • 举报
回复
Windows 9x中获取CPU使用率:
http://www.vckbase.com/code/winsys/win32/cpusage9x.zip


Windows NT/2000中获取CPU使用率:
http://www.vckbase.com/code/winsys/win32/cpusagent.zip

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧