Я обманул, судя по документации
BOOL GetProcessMemoryInfo(
[in] HANDLE Process,
[out] PPROCESS_MEMORY_COUNTERS ppsmemCounters,
[in] DWORD cb
);
не идентификатор нужно передавать а дескриптор
Вот так должно
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
pmc: PPROCESS_MEMORY_COUNTERS;
cb: Integer;
Proc: THandle;
PID:DWORD; //pid процесса (как в диспетчере задач), найденный через HWND
begin
Memo1.Lines.Clear;
cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
GetMem(pmc, cb);
pmc^.cb := cb;
Proc := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, PID);
if GetProcessMemoryInfo(Proc, pmc, cb) then
begin
Memo1.Lines.Add( FloatToStr(pmc^.WorkingSetSize/1024) + ' KB');
Memo1.Lines.Add( FloatToStr(pmc^.PagefileUsage/1024) + ' KB');
end;
FreeMem(pmc);
CloseHandle(Proc);
end;