Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.027 c
7-1077726910
Phantomaz
2004-02-25 19:35
2004.04.25
Почему SetWindowsHookEx не пашет, если активно Dos-окно ?


1-1080803645
pasha_golub
2004-04-01 11:14
2004.04.25
Реализация компонента-обертки


14-1080819212
VMcL
2004-04-01 15:33
2004.04.25
Формат MP3 объявлен вне закона


1-1081253210
baromir
2004-04-06 16:06
2004.04.25
Как мне взять часть имени файла??? (+)


14-1080840331
Soft
2004-04-01 21:25
2004.04.25
Вы тут на Делфи програмируете, а люди себе уже Longhorn ставят.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский