Moin Patrick,
leider hast Du bislang nicht angegeben, was nicht funktioniert.
Am besten schreibst Du mal im else Zweig
ShowMessage(SysErrorMessage(GetLastError));
um eine nähere Beschreibung zu bekommen, was nicht geklappt hat.
Ausserdem solltest Du bei OpenProcess mal PROCESS_QUERY_INFORMATION verwenden, statt PROCESS_ALL_ACCESS.
Letzteres geht bei Systemprozessen schief, da hier die Zugriffsrechte nicht ausreichen.
Auch sollte man OpenProcess keinesfalls so als Parameter verwenden, da das zurückgegebene
Handle auch wieder geschlossen werden muss.
Das Ganze könnte z.B. so aussehen:
Delphi-Quellcode:
var
pmc : PPROCESS_MEMORY_COUNTERS;
cb : Integer;
PrID : Integer; // processidentifier
hProc : DWORD;
begin
PrID := 8;
cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
pmc := AllocMem(cb);
try
pmc^.cb := cb;
hProc := OpenProcess(PROCESS_QUERY_INFORMATION, false, PrID);
if hProc <> 0 then begin
try
if GetProcessMemoryInfo(hProc, pmc, cb) then begin
ShowMessage(IntToStr(pmc^.WorkingSetSize) + ' Bytes');
end else begin
ShowMessage(SysErrorMessage(GetLastError));;
end;
finally
CloseHandle(hProc);
end;
end;
finally
FreeMem(pmc,SizeOf(_PROCESS_MEMORY_COUNTERS));
end;
end;