windows10下使用C++获取CPU使用率,使用性能计数器
时间: 2024-05-14 11:15:25 浏览: 402
C++获取CPU使用率源码.zip
可以使用性能计数器来获取CPU使用率,步骤如下:
1. 导入头文件 "Windows.h" 和 "pdh.h"。
2. 定义变量:
```c
HQUERY query; // 查询句柄
HCOUNTER counter; // 计数器句柄
PDH_STATUS status; // 状态
DWORD type; // 计数器类型
```
3. 初始化查询句柄和计数器句柄:
```c
status = PdhOpenQuery(NULL, 0, &query);
status = PdhAddCounter(query, L"\\Processor(_Total)\\% Processor Time", 0, &counter);
status = PdhCollectQueryData(query);
```
其中,第二个参数是要获取的计数器名称,这里的 "\_Total" 表示获取全部 CPU 的使用率。
4. 循环获取数据并输出:
```c
DWORD value;
while (true) {
Sleep(1000); // 等待 1 秒
status = PdhCollectQueryData(query);
status = PdhGetFormattedCounterValue(counter, PDH_FMT_LONG, &type, &value);
printf("CPU Usage: %d%%\n", value);
}
```
其中,Sleep(1000) 表示每隔 1 秒获取一次数据,PdhGetFormattedCounterValue() 函数用来获取计数器值。
完整代码示例:
```c
#include <Windows.h>
#include <pdh.h>
#include <stdio.h>
#pragma comment(lib, "pdh.lib")
int main() {
HQUERY query; // 查询句柄
HCOUNTER counter; // 计数器句柄
PDH_STATUS status; // 状态
DWORD type; // 计数器类型
// 初始化查询句柄和计数器句柄
status = PdhOpenQuery(NULL, 0, &query);
status = PdhAddCounter(query, L"\\Processor(_Total)\\% Processor Time", 0, &counter);
status = PdhCollectQueryData(query);
DWORD value;
while (true) {
Sleep(1000); // 等待 1 秒
status = PdhCollectQueryData(query);
status = PdhGetFormattedCounterValue(counter, PDH_FMT_LONG, &type, &value);
printf("CPU Usage: %d%%\n", value);
}
return 0;
}
```
注意:需要在项目属性中设置附加依赖项为 "pdh.lib",否则会出现链接错误。
阅读全文