Hallo Tobias,
du hast von einer statischen Struktur (TProcessMemoryCounters) auf eine dynamische (PProcessMemoryCounters) umgestellt, aber in deinem Code geht es etwas durcheinander. Probiere es mal so:
Delphi-Quellcode:
function TfoMain.ShowMemoryUsage(ProcessId: DWORD): DWORD;
var
hProcess: THandle;
PMC: PPROCESS_MEMORY_COUNTERS;
cb: Integer;
begin
Result := 0;
// cb := SizeOf(PMC); // = 4;
cb := SizeOf(PMC^);
GetMem(PMC, cb);
try
PMC^.cb := cb;
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcessId);
begin
if ( hProcess = 0 ) then
Exit;
// if ( GetProcessMemoryInfo(hProcess, @PMC, SizeOf(PMC)) ) then
if ( GetProcessMemoryInfo(hProcess, PMC, SizeOf(PMC^)) ) then
Result := (PMC^.WorkingSetSize Div 1024)
else
ShowMessage(SysErrorMessage(GetLastError));
end;
finally
CloseHandle(hProcess);
FreeMem(PMC, SizeOf(_PROCESS_MEMORY_COUNTERS));
end;
end;
Grüße vom marabu