cpu占用率的问题(50分)

Z

zhjwjan

Unregistered / Unconfirmed
GUEST, unregistred user!
我抄了一段程序获得cpu占用率,但显示cpu使用率总是1245048%,请问哪里不对?
procedure TForm1.Button1Click(Sender: TObject);
var
Dummy : array[0..1024] of byte;
begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_DYN_DATA; //统计数据在这个表项下
Reg.OpenKey('PerfStats/StartStat',false);
Reg.ReadBinaryData('KERNEL/CPUUsage',Dummy,Sizeof(Dummy));
Reg.CloseKey;
started:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Dummy : array[0..1024] of byte;
begin
Reg.OpenKey('PerfStats/StopStat',false);
Reg.ReadBinaryData('KERNEL/CPUUsage',Dummy,SizeOf(Dummy));
Reg.Free;
Started:=false;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
var
CPUU : integer;
begin
if started then
begin
Reg.OpenKey('PerfStats/StatData',false);
Reg.ReadBinaryData('KERNEL/CPUUsage',CPUU,SizeOf(Integer));
Reg.CloseKey;
Label1.Caption:=IntToStr(CPUU)+'%';
end;
end;
 
这个不准的,还是算了吧。
 
请问你有什么简单而准确的办法吗?我这个办法现在的问题是不能正常工作,准不准确先不管它。
 
我使用找到的adCpuUsage单元的GetCpuCount好像有问题。我的机器只有一个cpu,
它返回的值是2。在另一台双cpu机器上返回3。我这个单元是不是有错?有人告诉我吗?
 
接受答案了.
 
顶部