Mega Code Archive

 
Categories / Delphi / Hardware
 

Cpu saat frekansını öğrenmek

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