Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кто сколько CPU времени ест. [D7, Win95/98, WinME, NT4, Win2k, WinXP]


Seldon ©   (2004-02-26 16:11:00) 

Здрасьте.
Как узнать, сколько процессорного времени занимает конкретный процесс? (Тот же Explorer.exe)


jack128   (2004-02-29 23:26:00) [1]


> procedure TForm1.Timer1Timer(Sender: TObject);


> H:=FindWindow(' TForm1',' Form1');
Что то мне подсказывает, что ты ловишь не окно тестового приложение, а окно текущего(того, которое измеряет загрузку) приложения ;-)


Seldon   (2004-02-29 20:01:00) [2]

Может я чего неправильно делаю?


var
 Last:Int64;

procedure TForm1.Timer1Timer(Sender: TObject);
var
 H:THandle;
 ID,hP:Cardinal;
 tmp,PT:_FILETIME;
begin
 H:=FindWindow('TForm1','Form1');
 GetWindowThreadProcessId(H,ID);
 hp:=OpenProcess(PROCESS_ALL_ACCESS,false,ID);
 GetProcessTimes(hp,tmp,tmp,tmp,PT);
 Label1.Caption:=FloatToStr((Int64(PT)-Last)/1*100);
 Last:=Int64(PT)
end;


Для теста создал программку с бесконечным циклом. Она загружает на 100%.
Вышеприведённый код для неё даёт 0%. Где ошибка?


Seldon   (2004-02-27 15:47:00) [3]

А способ узнать в 9x есть?


VMcL   (2004-02-27 14:43:00) [4]

Roger that ))


Игорь Шевченко   (2004-02-27 11:45:00) [5]

VMcL ©   (27.02.04 11:18)

Во всех NT-системах.
Included in Windows XP, Windows 2000 Professional, and Windows NT Workstation 3.5 and later.


VMcL   (2004-02-27 11:18:00) [6]

2 [2]

Кстати, если мне не изменяет склероз, [1] работает в Win2K+.


Burmistroff   (2004-02-27 00:16:00) [7]

%=(разница usertime/кол-во секунд между опросами)*100%


Seldon   (2004-02-26 17:15:00) [8]

А как интерпретировать её результаты? Мне кажется, нужно использовать lpKernelTime или lpUserTime. Но они вроде как обозначают секунды, а мне нужны проценты.

Возможно я неправильно выразился: мне нужно узнать, на сколько % конкретный процесс загружает CPU.


VMcL   (2004-02-26 16:15:00) [9]

GetProcessTimes()


Наверх

Титульная страница Поиск, карта сайта Написать письмо