Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Frage zu GetProcessMemoryInfo

  Alt 17. Sep 2006, 08:47
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
  Mit Zitat antworten Zitat