读书人

VC++怎么获取某进程网络流量(速率)

发布时间: 2012-09-25 09:55:58 作者: rapoo

VC++如何获取某进程网络流量(速率)
请问VC如何获取一个进程网络速率,就像QQ医生里面的网络流量监控一样的效果

希望能够详细一点,或者是提供一个示例.分不够了,谢谢各位大虾.
如果可以,我愿意用 100-200 RMB购买示例代码.
如果是要出售的话,就回复一下淘宝链接.谢谢各位了.


[解决办法]

C/C++ code
#include <windows.h>#include <stdio.h>#include <conio.h>#include <tchar.h>#include <pdh.h>#pragma comment ( lib , "Pdh.lib" )#define MAXPATH 80int __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;}
[解决办法]
Hook socket的所有API 监控recv 和 send的流量。

读书人网 >C++

热点推荐