Главная страница
    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.039 c
1-1081412020
Closer
2004-04-08 12:13
2004.04.25
Отображение графа


3-1080621889
race1
2004-03-30 08:44
2004.04.25
autoupdate


9-1067830770
Сандро
2003-11-03 06:39
2004.04.25
LINES


3-1080473634
Крутыш
2004-03-28 15:33
2004.04.25
На панели задач остаётся иконка приложения


14-1080785243
Думкин
2004-04-01 06:07
2004.04.25
С днем рождения! 1 апреля





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский