Cara Membuat Aplikasi CPU USAGE dengan Delphi 7


CPU USAGE adalah Grafik yang menunjukkan waktu yang dibutuhkan prosesor dalam bekerja. Ditampilkan dalam persen. Jadi, counter ini adalah indikator dari kegiatan prosesor pada saat ini. Jika prosesor kita sedang sibuk bekerja, maka indikator akan naik, terkadang mencapai diatas 90% bahkan 100%. Dan dapat dipastikan komputer akan berjalan dengan lambat.




Berikut ini langkah-langkah cara pembuatan aplikasi CPU Usage di sertai dengan Script Code.
1. Download komponen TMS untuk Delphi 7.
2. Tambahkan komponen Timer, VrAngularMeter, VrMeter, VrProgressBar, dan VrDigit pada Form.
3. Masukkan Script Code berikut tepat dibawah {$R *.dfm}
    const SystemBasicInformation = 0;
    SystemPerformanceInformation = 2;
    SystemTimeInformation = 3;

    type TPDWord = ^DWORD;

    TSystem_Basic_Information = packed record
    dwUnknown1: DWORD;
    uKeMaximumIncrement: ULONG;
    uPageSize: ULONG;
    uMmNumberOfPhysicalPages: ULONG;
    uMmLowestPhysicalPage: ULONG;
    uMmHighestPhysicalPage: ULONG;
    uAllocationGranularity: ULONG;
    pLowestUserAddress: Pointer;
    pMmHighestUserAddress: Pointer;
    uKeActiveProcessors: ULONG;
    bKeNumberProcessors: byte;
    bUnknown2: byte;
    wUnknown3: word;
    end;

    type
    TSystem_Performance_Information = packed record
    liIdleTime: LARGE_INTEGER; {LARGE_INTEGER}
    dwSpare: array[0..75] of DWORD;    end;

    type
    TSystem_Time_Information = packed record
    liKeBootTime: LARGE_INTEGER;
    liKeSystemTime: LARGE_INTEGER;
    liExpTimeZoneBias: LARGE_INTEGER;
    uCurrentTimeZoneId: ULONG;
    dwReserved: DWORD;
    end;

    var
    NtQuerySystemInformation: function(infoClass: DWORD;
    buffer: Pointer;
    bufSize: DWORD;
    returnSize: TPDword): DWORD; stdcall = nil;

    liOldIdleTime: LARGE_INTEGER = ();
    liOldSystemTime: LARGE_INTEGER = ();
function Li2Double(x: LARGE_INTEGER): Double;
begin
    Result := x.HighPart * 4.294967296E9 + x.LowPart
End;
Procedure GetCPUUsage;
var
SysBaseInfo: TSystem_Basic_Information;
SysPerfInfo: TSystem_Performance_Information;
SysTimeInfo: TSystem_Time_Information;
status: Longint; {long}
dbSystemTime: Double;
dbIdleTime: Double;

bLoopAborted : boolean;
begin 
    if @NtQuerySystemInformation = nil then
    NtQuerySystemInformation := GetProcAddress(GetModuleHandle('ntdll.dll'),
    'NtQuerySystemInformation');

    // Mendapatkan presentase atau jumlah penggunaan processor
    status := NtQuerySystemInformation(SystemBasicInformation, @SysBaseInfo, SizeOf(SysBaseInfo), nil);
    if status <> 0 then Exit;

    bLoopAborted := False;

    while not bLoopAborted do
    begin
    // Membuat waktu sistem baru
    status := NtQuerySystemInformation(SystemTimeInformation, @SysTimeInfo, SizeOf(SysTimeInfo), 0);
    if status <> 0 then Exit;

    // Membuat waktu idle CPU baru
    status := NtQuerySystemInformation(SystemPerformanceInformation, @SysPerfInfo, SizeOf(SysPerfInfo), nil);
    if status <> 0 then Exit;

    // Jika panggilan pertama, maka akan diabaikan / dilewatkan saja
    if (liOldIdleTime.QuadPart <> 0) then
    begin
    dbIdleTime := Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
    dbSystemTime := Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);

    dbIdleTime := dbIdleTime / dbSystemTime;
    dbIdleTime := 100.0 - dbIdleTime * 100.0 / SysBaseInfo.bKeNumberProcessors + 0.5;

    // Menampilkan Presentase    Form1.Label1.Caption := FormatFloat('0',dbIdleTime);

    Application.ProcessMessages;
    end; 
    // Membuat waktu idle CPU dan waktu sistem yang baru
    liOldIdleTime := SysPerfInfo.liIdleTime;
    liOldSystemTime := SysTimeInfo.liKeSystemTime;
    // menunggu Timer dijalankan dalam 1 Detik
    Sleep(200);
    end;
End;
4. Double Click pada komponen Timer, dan masukkan Script Code berikut.
Procedure TForm1.Timer1Timer(Sender: TObject);
var TId: Cardinal;
begin
    Form1.VrProgressBar1.Position :=StrToInt(Form1.Label1.Caption);
    Form1.VrProgressBar2.Position :=StrToInt(Form1.Label1.Caption);
    Form1.VrMeter1.Position:=StrToInt(Form1.Label1.Caption);
    Form1.VrNum1.Value:=StrToInt(Form1.Label1.Caption);
    Form1.VrDigit1.Value:=StrToInt(Form1.Label1.Caption);
    Timer1.Interval:=200;
End;
5. Double click pada Form atau lakukan langkah berikut (Form1 > Object inspector > FormCreate), lalu masukkan script berikut.
Procedure TForm1.FormCreate(Sender: TObject);
var TId: Cardinal;
begin
    CreateThread(nil, 0, @GetCPUUsage, 0, 0, TId);
End;
6. Run program yang baru dibuat, dengan klik tombol Run pada delphi atau tekan F9. *Jika ada kendala pada Script Code silahkan hubungi kontak dibawah postingan ini.
7. Untuk tampilan, silahkan kreasikan sesuai dengan keinginan. Dan berikut tampilan dari aplikasi CPU Usage Saya.

Kami juga menerima pemesanan pembuatan aplikasi online maupun offline, pembuatan laporan Tugas Akhir, Skripsi, dan PKP.
http://gustisunarto.blogspot.co.id/p/kontak-kami.html
MANAJEMEN INFORMATIKA (MI)
Untuk info lebih lanjut hub. :

Tidak ada komentar:

Posting Komentar