找出CPU当前频率

问题描述 投票:0回答:2

Windows 8 任务管理器显示 CPU 的当前(不是最大)频率(例如 1.2 GHz)。有没有办法通过 Windows API 获得这个频率?最好使用 Delphi 或 Visual C++。

delphi winapi visual-c++
2个回答
5
投票

我会研究 WMI,特别是

CurrentClockSpeed
类的
Win32_Processor
属性。

MSDN 链接


0
投票

https://stackoverflow.com/a/78403806/7609214

通过以下方法得到的频率与任务管理器中的CPU速度类似

#include <Pdh.h>  // link to Pdh.lib

#define YOUR_CPU_MAX_FREQUENCY 3.3

HQUERY hquery;

// https://learn.microsoft.com/en-us/windows/win32/api/pdh/nf-pdh-pdhopenquerya
PdhOpenQueryA(nullptr, NULL, &hquery)

HCOUNTER hcounter;

// https://learn.microsoft.com/en-us/windows/win32/api/pdh/nf-pdh-pdhaddcountera
PdhAddCounterA(hquery, "\\Processor Information(_Total)\\% Processor Performance", NULL, &hcounter)

PdhCollectQueryData(hquery);

Sleep(200);

PdhCollectQueryData(hquery);

PDH_FMT_COUNTERVALUE value;
PdhGetFormattedCounterValue(hcounter, PDH_FMT_DOUBLE, nullptr, &value);

PdhCloseQuery(hquery);

double frequency = value.doubleValue / 100 * YOUR_CPU_MAX_FREQUENCY;

频率将是一个实时变化的值(以ghz为单位),例如1.2、2.6、...

© www.soinside.com 2019 - 2024. All rights reserved.