VC++怎么获取某进程网络流量

 我来答
就烦条0o
2017-04-26 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46497
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
#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, [Page]
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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式