Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

CPU & Memory usege моей проги   Найти похожие ветки 

 
Dr.Null   (2004-02-25 18:55) [0]

Как используя WinAPI узнать, сколько процессора (т.н. CPU Usage) жрет моя программа (желательно в real/double-формате) и сколько памяти она занимает в определенный момент времени?
Заранее благодарен!


 
Игорь Шевченко ©   (2004-02-25 19:12) [1]


> и сколько памяти она занимает в определенный момент времени?


Какой памяти ?


 
Klev   (2004-02-25 20:55) [2]

Посмотри исходники Freememory, а точнее к ее плагину fm_systemresource на http://www.hcsoft.spb.ru.

А вот это я написал вроде года 3 назад:

в uses надо добавить tlhelp32.

procedure getinfo;
var hSnap: THandle;
pe32: TProcessEntry32;

prid:cardinal;
modid:cardinal;
treads:cardinal;
parentid :cardinal;
priclass :integer;
memsz:cardinal;
mi: MEMORY_BASIC_INFORMATION;
snap:thandle;
M32     : TModuleEntry32;
allmem:cardinal;
begin
listbox_clear(lb2);

pe32.dwSize := SizeOf(TProcessEntry32);
hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

Process32First(hSnap, pe32);
repeat
ну а вместо следующего if тебе следует вставить проверку соответствует ли processid твоего процесса текущему.
if  pids[listbox_getcursel(listbox)]=pe32.th32ProcessID then begin

prid:=pe32.th32ProcessID;
modid:=pe32.th32ModuleID;
treads:=pe32.cntThreads;
parentid:=pe32.th32ParentProcessID;
priclass:=pe32.pcPriClassBase;
end
until not Process32Next(hSnap,pe32);
closehandle(hsnap);

Здесь у тебя уже есть вся информация о процессе.
можешь делать с ней все что угодно
{setdlgitemtext(handle,111,pchar("0x"+inttohex(prid)));
setdlgitemtext(handle,112,pchar("0x"+inttohex(modid)));
setdlgitemtext(handle,113,pchar(inttostr(treads)));
setdlgitemtext(handle,114,pchar("0x"+inttohex(parentid)));
setdlgitemtext(handle,115,pchar(inttostr(priclass)));
if memsz<>0 then setdlgitemtext(handle,116,pchar(inttostr(memsz)));
setdlgitemtext(handle,121,pchar(inttostr(allmem)));}
end;
В этом примере используется listbox в котором уже находится список процессов.
Также использовани некоторые процедуры и функции для управления списками (пр: listbox_addstring).
Все писалось очень быстро, на API, поэтому удобочитаемость отсутствует. Sorry :)
И вообще советую посмотреть про toolhelp в mICROSOFT SDK.


 
Dr.Null   (2004-02-25 21:46) [3]

> Игорь Шевченко ©   (25.02.04 19:12) [1]

Той, использование которой отображается в Task Manager"е

> Klev   (25.02.04 20:55) [2]

Спасибо


 
Dr.Null   (2004-02-25 22:34) [4]

Хм... интересно, а какие из полей структуры PROCESSENTRY32 содержат требуемые мне значения? А вообще, насколько я помню, Toolhelp32 не поддерживается WinNT, хотелось бы что-нибудь более универсальное.


 
Игорь Шевченко ©   (2004-02-26 11:09) [5]

Dr.Null   (25.02.04 21:46)

Там две памяти отображается - какая интересует ?


 
Dr.Null   (2004-02-26 22:04) [6]

> Игорь Шевченко ©   (26.02.04 11:09) [5]

Не знаю, у меня в диспетчере задач WinXP Pro на вкладке "процессы" тока одна память отображается. А если имеется ввиду то, что там отображается суммарное значение каких-то двух паметей, то меня интересует именно эта сумма... гы, во загнул-то...


 
VMcL ©   (2004-02-26 22:53) [7]

>>Dr.Null  (26.02.04 22:04) [6]
>у меня в диспетчере задач WinXP Pro на вкладке "процессы" тока одна память отображается

А у меня, к примеру, аж три.

Вид | Выбрать столбцы...
___
LMD


 
Dr.Null   (2004-02-27 07:35) [8]

Удалено модератором
Примечание: Offtopic


 
Игорь Шевченко ©   (2004-02-27 11:03) [9]

Определение памяти "которая показывается в Task Manager" для NT-систем:

procedure TfMain.GetMemoryStatus;
var
 VmCounters : VM_COUNTERS;
begin
 if not NT_SUCCESS(NtQueryInformationProcess(GetCurrentProcess, ProcessVmCounters,
     @VmCounters, SizeOf(VmCounters), nil)) then
   Exit;

//    VmCounters.WorkingSetSize - это "Память"
//    VmCounters.PageFileUsage - это "Виртуальная память"

end;


Прототипы функции ищутся в Google


 
Dr.Null   (2004-02-27 16:22) [10]

> Игорь Шевченко

Спасибо



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
1-1081398844
Viktor
2004-04-08 08:34
2004.04.25
Запустить InternetExplorer?


14-1080634026
Фикус
2004-03-30 12:07
2004.04.25
Вопрос по Excel


1-1081415231
Vovas
2004-04-08 13:07
2004.04.25
Как привести форму-предок к типу формы-потомка?


1-1081057964
Arturchik
2004-04-04 09:52
2004.04.25
Вопрос по TForm1.FormCreate


3-1080389025
Новичек2
2004-03-27 15:03
2004.04.25
TDBAdvStringGrid и выравнивание по вертикали.