![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;