繁体中文
设为首页
加入收藏
当前位置:程序开发首页 >> Visual C++ >> 轻松取得winnt下的系统资源信息(cpu利用率,内存使用情况,线程数 )

轻松取得winnt下的系统资源信息(cpu利用率,内存使用情况,线程数 )

2008-03-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:看到好多朋友询问怎样得到系统信息(象任务管理器一样),前段时间研究了一番,有所领悟,现与大家共享。 下面是部分测试代码: #include #include #include #include #include #define MAXPATH 80 int __cdecl _...

看到好多朋友询问怎样得到系统信息(象任务管理器一样),前段时间研究了一番,有所领悟,现与大家共享。

下面是部分测试代码:

#include

#include

#include

#include

#include

#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);

// "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;

}

责任编辑:admin
相关文章