НАРОД ! УСЛЫШТЕ МОЙ ВОПЛЬ ! ОЧЕНЬ НАДО !
Как определить загрузку CPU ???
Чертовы Диспетчер Задач вместе с Перфоманс
Монитором ведь делают это, а вок как ?
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
25-05-2002 11:53
А если нужно посчитать не общую загрузку CPU, загрузку CPU только одним процессом? Как это реализуется?
25-12-2001 15:03 | Вопрос к автору: запрос дополнительной информации
Господа коллеги, а как же определить загрузку CPU под Win2000. Уверения
Алексея Петрова, что:
"Параметры находятся именно в реестре в ветви
Windows NT/2000: HKEY_PERFORMANCE_DATA
Windows 95/98: HKEY_DYN_DATA "
не дают никакого результата. Во всяком случае до корневого ключа
HKEY_PERFORMANCE_DATA я так и не добрался и RegEdit-е его не видно.
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
TimerCPU.Enabled := False;
QueryCPUUsage('StopStat');
if Assigned(RegCPU) then
RegCPU.Free; // free the registry object
Application.ProcessMessages;//это не обязательно
CanClose:= True;
end;
function TForm1.QueryCPUUsage(AKey: string): integer;
var
FBuffer: integer;
begin
{ Pass StartStat to initiate data collection
Pass StopStat to terminate data collection
Pass StatData to retrieve data }
Result := 0;
RegCPU.RootKey := HKEY_DYN_DATA;
RegCPU.OpenKey( 'PerfStats\' + AKey, False );
try
RegCPU.ReadBinaryData( 'KERNEL\CPUUsage', FBuffer, SizeOf( Integer ) );
if ( AKey = 'StatData' ) then
Result := FBuffer;// Процент загрузки CPU
finally
RegCPU.CloseKey;
end;
end;
procedure TForm1.TimerCPUTimer(Sender: TObject);
begin
Label.Caption := 'CPU занято на '+IntToStr(QueryCPUUsage('StatData'))+'%';
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
TimerCPU.Enabled := False;
QueryCPUUsage('StopStat');
if Assigned(RegCPU) then
RegCPU.Free; // free the registry object
Application.ProcessMessages;//это не обязательно
CanClose:= True;
end;
function TForm1.QueryCPUUsage(AKey: string): integer;
var
FBuffer: integer;
begin
{ Pass StartStat to initiate data collection
Pass StopStat to terminate data collection
Pass StatData to retrieve data }
Result := 0;
RegCPU.RootKey := HKEY_DYN_DATA;
RegCPU.OpenKey( 'PerfStats\' + AKey, False );
try
RegCPU.ReadBinaryData( 'KERNEL\CPUUsage', FBuffer, SizeOf( Integer ) );
if ( AKey = 'StatData' ) then
Result := FBuffer;// Процент загрузки CPU
finally
RegCPU.CloseKey;
end;
end;
procedure TForm1.TimerCPUTimer(Sender: TObject);
begin
Label.Caption := 'CPU занято на '+IntToStr(QueryCPUUsage('StatData'))+'%';
end;
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.