有什么算法或者C++代码可以获取CPU使用率和任务管理器一样的值
时间: 2024-04-30 22:17:56 浏览: 129
获取CPU使用率可以使用系统性能计数器(Performance Counter)的API来实现。在 Windows 平台上,可以使用 PdhOpenQuery、PdhAddCounter、PdhCollectQueryData 等 API 实现。这些 API 可以获取各种性能计数器的值,包括 CPU 使用率、内存使用率等等。
以下是一个使用 PdhOpenQuery、PdhAddCounter、PdhCollectQueryData 实现获取 CPU 使用率的示例代码:
```
#include <windows.h>
#include <pdh.h>
#include <pdhmsg.h>
#pragma comment(lib, "pdh.lib")
int main()
{
PDH_STATUS status;
HQUERY query;
HCOUNTER counter;
DWORD type;
PDH_FMT_COUNTERVALUE value;
// 初始化 PDH
status = PdhOpenQuery(NULL, NULL, &query);
if (status != ERROR_SUCCESS) {
printf("PdhOpenQuery failed with status %d.\n", status);
return 1;
}
// 添加 CPU 使用率计数器
status = PdhAddCounter(query, "\\Processor(_Total)\\% Processor Time", NULL, &counter);
if (status != ERROR_SUCCESS) {
printf("PdhAddCounter failed with status %d.\n", status);
PdhCloseQuery(query);
return 1;
}
// 收集计数器数据
status = PdhCollectQueryData(query);
if (status != ERROR_SUCCESS) {
printf("PdhCollectQueryData failed with status %d.\n", status);
PdhCloseQuery(query);
return 1;
}
// 获取计数器值
status = PdhGetFormattedCounterValue(counter, PDH_FMT_DOUBLE, &type, &value);
if (status != ERROR_SUCCESS) {
printf("PdhGetFormattedCounterValue failed with status %d.\n", status);
PdhCloseQuery(query);
return 1;
}
printf("CPU usage: %.2f%%\n", value.doubleValue);
// 关闭 PDH
PdhCloseQuery(query);
return 0;
}
```
这段代码会输出当前 CPU 使用率的百分比。你可以在自己的程序中使用类似的代码来获取 CPU 使用率。
阅读全文