Unit Unit1;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
Type
TForm1 = Class(TForm)
Label1 : TLabel;
Button1 : TButton;
Label2 : TLabel;
Timer1 : TTimer;
Procedure Button1Click(Sender: TObject);
Procedure Timer1Timer(Sender: TObject);
Private
Public
End;
Var
Form1 : TForm1;
Implementation
{$R *.dfm}
Function CPUSaatFrekansiniOgren(Const OlcumSuresi : Integer = 500) : Double;
Var
Zamanlayici1, Zamanlayici2 : DWORD;
OncelikSinifi, Oncelik : Integer;
Begin
// Mevcut öncelikleri kaydet.
OncelikSinifi := GetPriorityClass(GetCurrentProcess);
Oncelik := GetThreadPriority(GetCurrentThread);
// Bu THREAD'i öncelikli yap.
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
Asm
DW 310Fh
MOV Zamanlayici2, eax
MOV Zamanlayici1, edx
End;
Sleep(OlcumSuresi);
Asm
DW 310Fh
SUB eax, Zamanlayici2
SBB edx, Zamanlayici1
MOV Zamanlayici2, eax
MOV Zamanlayici1, edx
End;
// Orijinal Önceliklere geri dönülüyor.
SetThreadPriority(GetCurrentThread, Oncelik);
SetPriorityClass(GetCurrentProcess, OncelikSinifi);
// CPU Saat Frekansı Sonuç Olarak Döndürülüyor.
Result := Zamanlayici2 / (1000.0 * OlcumSuresi);
End;
Procedure TForm1.Button1Click(Sender: TObject);
Begin
Close;
End;
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
Label2.Caption:=FormatFloat('####.00 Mhz.',CPUSaatFrekansiniOgren);
End;
End.
// Kolay Gelsin.
// Hakan HAMURCU
// www.hamurcu.com