How to get the processor usage

 

This tips comes from our partner Paul's Delphi site

 

2001-10-28 13:03:28  Gustav Evertsson   Ratings: 0, Votes: 0

 

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  ComCtrls, CommCtrl, StdCtrls, Menus,WinSpool, ExtCtrls, Buttons, Registry;

 

type

  TForm1 = class(TForm)

    Button1: TButton;

    Label1: TLabel;

    Label2: TLabel;

    Timer1: TTimer;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

  private

    { Private declarations }

    started : boolean;

    reg : TRegistry;

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.Button1Click(Sender: TObject);

var

  Dummy : array[0..1024] of byte;

begin

  // Stats started by Button1 hit

  Reg:=TRegistry.Create;

  Reg.RootKey:=HKEY_DYN_DATA;    // Statistic data is saved under this topic

  { Before starting retrieving statistic data you have to query

    the appropiate key under 'PerfStats\StartStat'. }

  Reg.OpenKey('PerfStats\StartStat',false);      // Open this key first to start collecting performance data

  Reg.ReadBinaryData('KERNEL\CPUUsage',Dummy,Sizeof(Dummy));

  Reg.CloseKey;

  started:=true;

end;

 

procedure TForm1.Timer1Timer(Sender: TObject);

var

  CPUU : integer;

begin

  { After starting the collection of statistic data, you can retrieve the

    recent value under the 'PerfStats\StatData' key. This is done by a timer

    event in this example }

  if started then

  begin

    Reg.OpenKey('PerfStats\StatData',false);      // Open extension kex for txt files

    Reg.ReadBinaryData('KERNEL\CPUUsage',CPUU,SizeOf(Integer));

    Reg.CloseKey;

    Label1.Caption:=IntToStr(CPUU)+'%';

  end;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var

  Dummy : array[0..1024] of byte;

begin

  // Button2 hit stops statistic collection

  { Collecting statistic data is stopped by a query under 'PerfStats/StopStat' }

  Reg.OpenKey('PerfStats\StopStat',false);     // Open this key first to start collecting performance data

  Reg.ReadBinaryData('KERNEL\CPUUsage',Dummy,SizeOf(Dummy));

  Reg.Free;

  Started:=false;

end;

 

end.