取特定进程的CPU占用率

107 篇文章 1 订阅
107 篇文章 0 订阅

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#include <pdh.h>
#pragma comment ( lib , "Pdh.lib" )
#define MAXPATH 80
int __cdecl _tmain (int argc, TCHAR **argv)
{
  HQUERY          hQuery;
  HCOUNTER        *pCounterHandle;
  PDH_STATUS      pdhStatus;
  PDH_FMT_COUNTERVALUE  fmtValue;
  DWORD          ctrType;
  CHAR            szPathBuffer[MAXPATH] = {'/0'};
  int            nRetCode = 0;
  // Open the query object.
  pdhStatus = PdhOpenQuery (0, 0, &hQuery);

  pCounterHandle = (HCOUNTER *)GlobalAlloc(GPTR, sizeof(HCOUNTER));

/*
//Processor(_Total)//% Processor Time CPU使用率
//System//Processes 当前系统进程数
//System//Threads 当前系统线程数
//Memory//Commit Limit 总共内存数K (包括虚拟内存)
//Memory//Committed Bytes 已用内存数K (包括虚拟内存)
//TCP//Connections Active 系统中已建立的 TCP连接个数
//其它Object Items 可以利用PdhEnumObjects()和PdhEnumObjectItems()得到

*/
 // strcat(szPathBuffer,"//System//Processes");

//  pdhStatus = PdhAddCounter (hQuery,  szPathBuffer,  0,  pCounterHandle);
  //得到QQ进程的CPU占用率,这句出错
 pdhStatus = PdhAddCounter(hQuery,"//Process(QQ)//% Processor Time",0,pCounterHandle);
  // "Prime" counters that need two values to display a
  //  formatted value.
  pdhStatus = PdhCollectQueryData (hQuery);

  // Get the current value of this counter.
  pdhStatus = PdhGetFormattedCounterValue (*pCounterHandle,
                                              PDH_FMT_DOUBLE,
                                              &ctrType,
                                              &fmtValue);


    //fmtValue.doubleValue为所要的结果
    if (pdhStatus == ERROR_SUCCESS) {
        printf (TEXT(",/"%.20g/"/n"), fmtValue.doubleValue);
    }
else {
    // Print the error value.
        printf (TEXT("error./"-1/""));
  }

  // Close the query.
  pdhStatus = PdhCloseQuery (hQuery);

  return nRetCode;
}


该文章转载自网络大本营:http://www.xrss.cn/Dev/C/20075512933.Html

(摘自 http://www.xrss.cn/Dev/C/20075512933.Html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值