Здравствуйте, Kohen, Вы писали:
K>Пoдскaжите, пoжaлуйстa, кaк из прoгрaммы oпределить степень зaгрузки прoцессoрa в Win2000 и кaкoй % прoцессoрнoгo времени зaнимaет кaждый прoцесс.
Степень загрузки — подскажу. А вот по процессам не пробовал.
Есть такой хедер — pdh.h (и либа-переходник pdh.lib).
А вот кусок на Object Pascal:
procedure TForm1.FormCreate(Sender: TObject);
var
s:string;
Buf:array[0..MAX_COMPUTERNAME_LENGTH]of char;
BufSz:cardinal;
state:integer; //Если не равно 0 - ошибка
begin
BufSz:=MAX_COMPUTERNAME_LENGTH+1;
GetComputerName(buf,bufsz);
s:='\Processor(_Total)\% Processor Time';
state:=PDHOpenQuery(nil,0,hq);
state:=PDHAddCounter(hq,@s[1],0,hc);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
state:integer;
ctype:cardinal;
value:TPDH_FMT_COUNTERVALUE; //В pdh.h это PDH_FMT_COUNTERVALUE
begin
st:=PDHCollectQueryData(hq);
st:=PdhGetFormattedCounterValue(hc,PDH_FMT_LARGE or PDH_FMT_NOSCALE,ctype,value);
gauge1.Progress:=value.largeValue; //процент загрузки
end;
Slicer