Thursday, December 25, 2008

Cari tau Speed CPU lewat aplikasi buatan sendiri [Delphi Source]

ATTENTION FIRST::
Ini listing program sederhana banget kok
nama aplikasi : CPU Speed Info
deskripsi : mengetahui seberapa cepat CPU kamu
tanggal : 10 November 2007 (dah lama banget)

Source code::

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Timer1: TTimer;
Timer2: TTimer;
Edit2: TEdit;
ProgressBar1: TProgressBar;
Button1: TButton;
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

function GetCPUSpeed: Double;

var
Form1: TForm1;

implementation

{$R *.dfm}
{FUNGSI INI YANG GUNANYA BUAT NGE-GET INFO SPEED CPU KAMU}
{PADA SATU WAKTU, TADINYA TOMBOL ITU GUNANYA UNTUK NGE-GET, TAPI AKU KASIH TIMER AJA}
{JADI SPEED OTOMATIS BERUBAH-UBAH SESUAI WKTU(/DETIK)}
function GetCPUSpeed: Double;
const
DelayTime = 500; // satuan waktu dalam milidetik
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); // tunda selama 10 ms
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.0 * DelayTime);
end;

{PROCEDURE INI AMA YANG SATUNYA DIBAWAH GUNANYA UNTUK ENABLED-DISABLED TIMER}
{JADI PROSES NGE-GET INFO CPU SPEEDNYA OTMATIS TERUPDATE}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit2.Text:=TimeToStr(Time);
Edit1.Text := Format('%f MHz', [GetCPUSpeed]);
timer2.Enabled := true;
timer1.Enabled := false;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
timer1.Enabled := true;
timer2.Enabled := false;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
with ProgressBar1 do
begin
Min := 0;
Max := Format('%f MHz', [GetCPUSpeed]);
for i := Min to Max do
begin
Position := i;
end;
end;
end;

end.

Membuat file compile'annya:
1.Masuk delphi (aku pake Delphi 7) copy listing ini, yang auto create dari delphi kamu hapus semua
2.buat 1 project trus ga usah ada yg kamu ubah2, kecuali kamu add 2 buah timer + add 1 buah textedit cuma dicontoh ini aku buat 2, yang satunya untuk jam aja, slevbihnya kayak progressbar ama button, ga usah dibuat jg gpp
3.sebelum kamu add, kamu quote dlu yang di deklarasi Type untuk texteditnya ama timernya, klo udah baru di unquote lagi
4.km compile trus dapet dah, file .exe aplikasinya..
5.selesai, bisa langsung diaktifkan

2 comments:

  1. wah....keren nih.. cm aku ndak mudheng kie, ya maklum bukan orang komp kyk mase sih...
    ajarin yak...:)

    ReplyDelete
  2. ajarin?
    bolehlah...

    tapi dibaca dlu ya, trus liat tutornya di inet aja, googling gtu..
    ntar klo dah mentok baru deh, aku bantuin..ehehe

    ReplyDelete