Узнаем текущую частоту процессора

Сегодня я продолжу цикл статей про администрирование компьютера. Теперь мы научимся получать частоту процессора. Хочется заметить, что в разные моменты времени она будет изменяться, поэтому логично очень часто её запрашивать. Поможет нам в этом следующая функция:



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;


И, как обычно, я покажу пример использования такого кода.

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  ShowMessage(Format('Your CPU speed: %f MHz', [GetCPUSpeed])); 
end;


Надеюсь, у вас всё получилось и программа заработала.
А новые читатели не забывайте подписываться на обновления:)

Удачи! 
_____________________________

Расслабиться пора!
Сегодня советую посмотреть веселый анимационный ролик, который называется Funny Programmers.





Комментарии

Популярные сообщения из этого блога

Delphi: Создаем простейшую 2D игру