Как узнать частоту процессора (CPU)

// Получаем скорость CPU в MHz
function GetCPUSpeed: Double;
const
DelayTime = 500;
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
asm
dw 310Fh
mov TimerLo, eax
mov TimerHi, edx
end;
Sleep(DelayTime);
asm
dw 310Fh
sub eax, TimerLo
sbb edx, TimerHi
mov TimerLo, eax
mov TimerHi, edx
end;
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := TimerLo / (1000 * DelayTime);
end;
Чтобы получить два знака после запятой, добавьте модуль Math для функции RoundTo (округление) в раздел uses Вашей формы и выполните следующий код:
procedure TForm1.btnSpeedClick(Sender: TObject);
var
MHz: Double;
begin
MHz:= GetCPUSpeed;
MHz:= RoundTo(MHz, -2);
ShowMessage('Частота Вашего процессора : ' +
FloatToStr(MHz) + ' МГц');
end;
Комментарии