我想用性能计数器得到每个进程占用的CPU使用率。我知道在PdhAddCounter()中"\\Processor(0)\\% Processor Time"表示的是系统的CPU占用率。比如我有个程序名字是XDICT,我怎么得到他的占用率啊?
谁能帮帮我啊
急啊。。老板催啊! 

解决方案 »

  1.   

    创建计数器(假设要获取QQ程序的CPU使用率) 
      PDH_FMT_COUNTERVALUE fmtValue ;
      DWORD dwctrType ;
      __try
      {
      pdhStatus = PdhAddCounter ( hQuery , _TEXT ( "Process(_TEXT ( "QQ" ))\\%Processor Time" ) , 0 , pCounterHandle ) ;
      if ( pdhStatus != ERROR_SUCCESS )
      {  __leave ;
      }
      pdhStatus = PdhCollectQueryData ( hQuery ) ;
      if ( pdhStatus != ERROR_SUCCESS )
      {  __leave ;  }
      得到当前计数器值
      pdhStatus = PdhGetFormattedCounterValue ( * pCounterHandle , PDH_FMT_DOUBLE , & dwctrType , & fmtValue ) ;
      if ( pdhStatus != ERROR_SUCCESS )
      {  __leave ;  }
      // fmtValue.doubleValue就是当前此时此刻该程序的CPU使用率(循环调用就可得到实时数据) 
      }
      __finally
      {
      if ( AbnormalTermination () )
      {
      
      }
      }
     关闭计数器  pdhStatus = PdhCloseQuery ( hQuery ) ;
      if ( pdhStatus == ERROR_SUCCESS )
      {
      // 关闭成功
      }
      else
      {
      // 关闭失败
      }