Показать сообщение отдельно
  #4  
Старый 17.02.2023, 10:39
Shaft Shaft вне форума
Новичок
 
Регистрация: 15.05.2013
Сообщения: 74
Версия Delphi: 7/10.4
Репутация: 12
По умолчанию

Я обманул, судя по документации
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;
Ответить с цитированием