文件名称:显示进程CPU利用率源码
文件大小:1.89MB
文件格式:RAR
更新时间:2010-11-09 07:18:58
CPU利用率 刷新 进程
计算每个进程的CPU利用率的函数是int CShowAllProcessDlg::GetCpusage(int Index, DWORD id)
第一个参数是进程在进程数组中的位置,而第二个参数是进程的ID。
重要的事,计算的公式需要获得一定时间间隔的两组进程数据来完成(这样计算才精确)。
所以,定义了两个数组:
__int64 LastTotalProcessCPUUsage[50];
__int64 LastCurrentProcessCPUUsage[50];
来存放获取的数据,这两个数组很重要,当然你也可以通过其他的方法实现。若要实时刷新进程的CPU利用率的话,下次运算的时候还要用到数组中的数据。
另外,这个程序本来打算做成像Windows的任务管理器的——实时刷新CPU利用率。可后来发现换到另一电脑时,刷新出来的值是不对的。原来不同的CPU,其主频是不一样的,所以设置的刷新间隔时间(SetTimer的第二个参数,以毫秒为单位)也应不同。你可根据自己的情况去设置。
那个Readme希望你能读一下,也许对你有所帮助。
我给你传的是没有实时刷新的。你可以连续点击“获取进程”,观察CPU利用率随时间的变动情况。有可能出现负值,可能是你两次点击间的时间间隔太长的缘故。我不能保证获取值的正确性。因为它的间隔时间不同,得出的值就有可能不同。:) 我也正在研究中。
【文件预览】:
interval_ShowAllProcess
----StdAfx.cpp(216B)
----resource.h(1KB)
----ShowAllProcess.h(1KB)
----ShowAllProcess.plg(262B)
----SXButton.h(3KB)
----ShowAllProcess.aps(41KB)
----ShowAllProcessDlg.cpp(10KB)
----ShowAllProcess.clw(2KB)
----ShowAllProcess.ncb(169KB)
----每个进程CPU利用率Readme.txt(1KB)
----Debug()
--------vc60.pdb(364KB)
--------ShowAllProcess.obj(15KB)
--------vc60.idb(209KB)
--------SXButton.obj(26KB)
--------ShowAllProcess.pdb(425KB)
--------ShowAllProcessDlg.obj(40KB)
--------StdAfx.obj(103KB)
--------ShowAllProcess.pch(5.25MB)
--------ShowAllProcess.ilk(263KB)
--------ShowAllProcess.exe(136KB)
--------ShowAllProcess.res(22KB)
----ShowAllProcess.cpp(2KB)
----ReadMe.txt(4KB)
----StdAfx.h(1KB)
----CPU.h(1KB)
----SXButton.cpp(11KB)
----ShowAllProcess.dsw(551B)
----res()
--------2.ico(16KB)
--------32X32X16_CANCELBOR.ICO(2KB)
--------ShowAllProcess.ico(1KB)
--------32X32X16_SHOW.ICO(766B)
--------ShowAllProcess.rc2(406B)
--------32X32X16_EXIT.ICO(766B)
----ShowAllProcess.rc(6KB)
----ShowAllProcessDlg.h(2KB)
----ShowAllProcess.opt(48KB)
----ShowAllProcess.dsp(5KB)