Как узнать частоту процессора (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;
Комментарии