我知道可以通过PDH来获取进程的使用率.比如:
PdhAddCounter( 
 ..
 _T("\\Process(QQ)\\%% Processor Time"), // Perfomance Object Path
 ..
)可以获得QQ的使用率现在的问题是我写了一个程序Client.exe,希望他在运行期间能够打印出自己的CPU占有率。当我开了多个Client.exe后,上面的做法就不行了(始终打印出第一个被开启的进程).问题1:
我知道进程可以通过GetProcessID获取自身的PID,但是如何通过PID来获取占有率?(上面的Path指明是要进程名的)问题2:
我查了msdn, 照msdn说的做法 - 同名对象的不同实例可以用(QQ/0#1)的方式来指定,
但我把上面的PATH改为_T("\\Process(QQ/0#1)\\%% Processor Time")是打印不出来的。我想可能格式有错,请高手指点!急,在线等!

解决方案 »

  1.   

    楼上的GetProcessTimes只能获取进程的创建,结束,运行时间,不能获取CPU占有率吧!
      

  2.   

    结合下GetSystemTime, 参考下面伪代码计算占用率:在一个线程中每隔一秒钟(用事件等待),计算一下当前进程cpu占用率:
    下面以间隔一次进行计算:
    pt1 = GetProcessTimes();//(第一次)
    pt2 = GetProcessTimes();//(第二次)
    st1 = GetSystemTime();//(第一次)
    st2 = GetSystemTime();//(第二次)cpu_usage = (pt2-pt1)/(st2-st1)
    通常如果是多个cpu
    cpu_usage /= cpu_count;