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

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

GetProcessMemoryInfo


maxistent ©   (2006-09-16 02:39:00) 

Как это корректно использовать:
(модуль PSApi)
function GetProcessMemoryInfo(Process: THandle; ppsmemCounters: PPROCESS_MEMORY_COUNTERS; cb: DWORD): BOOL;


Ketmar   (2006-09-17 11:56:00) [1]

> [4] maxistent ©   (17.09.06 11:02)
есть. забить.


maxistent   (2006-09-17 11:02:00) [2]

Я не могу использовать WMI. Есть другие предложения?


Ketmar   (2006-09-16 21:54:00) [3]

> [2] maxistent ©   (16.09.06 21:34)
WMI.


maxistent   (2006-09-16 21:34:00) [4]

Теперь не в чем :-) А как получить кол-во дескрипторов (HandleCount) и кол-во потоков (ThreadCount) для опред. процесса по его id ? Ну или может общее их кол-во в системе на тек. момент?


Zeqfreed   (2006-09-16 03:05:00) [5]

А в чем проблема? На MSDN дан пример даже, да и сама функция не сложная.

procedure ShowProcessMemUsage(ProcessId : Cardinal);
type
 TProcessMemoryCountersEx = packed record
  cb: DWORD;
  PageFaultCount: DWORD;
  PeakWorkingSetSize: DWORD;
  WorkingSetSize: DWORD;
  QuotaPeakPagedPoolUsage: DWORD;
  QuotaPagedPoolUsage: DWORD;
  QuotaPeakNonPagedPoolUsage: DWORD;
  QuotaNonPagedPoolUsage: DWORD;
  PagefileUsage: DWORD;
  PeakPagefileUsage: DWORD;
  PrivateUsage: DWORD;  
 end;
var
 hProcess : Cardinal;
 MemCounters : TProcessMemoryCountersEx;
begin
 hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcessId);
 if (hProcess <> 0) and GetProcessMemoryInfo(hProcess, @MemCounters, SizeOf(TProcessMemoryCountersEx)) then begin
  with MemCounters do begin
   ShowMessageFmt('PageFaultCount: %u'#13#10 +
                  'PeakWorkingSetSize: %u'#13#10 +
                  'WorkingSetSize: %u'#13#10 +
                  'QuotaPeakPagedPoolUsage: %u'#13#10 +
                  'QuotaPagedPoolUsage: %u'#13#10 +
                  'QuotaPeakNonPagedPoolUsage: %u'#13#10 +
                  'QuotaNonPagedPoolUsage: %u'#13#10 +
                  'PagefileUsage: %u'#13#10 +
                  'PeakPagefileUsage: %u'#13#10 +
                  'PrivateUsage: %u'#13#10,
                  [PageFaultCount, PeakWorkingSetSize,
                   WorkingSetSize, QuotaPeakPagedPoolUsage,
                  QuotaPagedPoolUsage, QuotaPeakNonPagedPoolUsage,
                  QuotaNonPagedPoolUsage, PagefileUsage,
                  PeakPagefileUsage, PrivateUsage]);
  end;

  CloseHandle(hProcess);
 end;
end;


Наверх

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