Доброго времени суток!
Подскажите пожалуйста, как определить уровень загрузки процессора в текущий момент времени под управлением WinXP и Ubuntu 9.04?
Спасибо!
Модератор: Модераторы
carrots писал(а):В Linux это очень просто, через tprocess
makavka писал(а):-Sd
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, process;
type
{ TForm1 }
TForm1 = class(TForm)
LabelCPU: TLabel;
LabelCPUUsage: TLabel;
LabelMEM: TLabel;
LabelSWAP: TLabel;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ private declarations }
public
FTop: tprocess;
FCPUUsage: single;
FProcessOut: TStringList;
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
FProcessOut := TStringList.Create;
FTop := TProcess.Create(Self);
FTop.CommandLine := 'top -bcisSH';
FTop.Options := FTop.Options + [poUsePipes, poStderrToOutPut, poDefaultErrorMode];
FTop.Execute;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FProcessOut.Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
i, i2: integer;
s: String;
begin
FProcessOut.AddStrings(FTop.Environment);
if FTop.Output.NumBytesAvailable > 0 then
begin
FProcessOut.LoadFromStream(FTop.Output);
for i := 0 to FProcessOut.Count-1 do
begin
if AnsiPos('Cpu(s):',FProcessOut.Strings[i]) > 0 then
begin
LabelCPU.Caption := FProcessOut.Strings[i];
s := '';
for i2:= 8 to 12 do
s := s+ FProcessOut.Strings[i][i2];
FCPUUsage := StrToFloat(StringReplace(s,' ','',[rfReplaceAll]));
LabelCPUUsage.Caption:='CPU Usage: '+FloatToStr(FCPUUsage)+'%';
end;
if AnsiPos('Mem:',FProcessOut.Strings[i]) > 0 then LabelMEM.Caption := FProcessOut.Strings[i];
if AnsiPos('Swap:',FProcessOut.Strings[i]) > 0 then LabelSWAP.Caption := FProcessOut.Strings[i];
end;
end;
end;
initialization
{$I unit1.lrs}
end.
Mr.Smart писал(а):Поищите по форуму TProcess.
Attid писал(а):кстати ругалось скорее всего на работу с указателями
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41