Einzelnen Beitrag anzeigen

Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#1

Problem mit Auslastung durch je. Prozesse - GetProcessMemory

  Alt 28. Jul 2005, 16:14
Mein Problem ist folgendes: Ich habe eine Liste aller Prozesse (aaa.exe, bbb.exe, etc.). Nun will ich die jeweilige Auslastung mit GetProcessMemoryInfo() der PSAPI ermitteln. Das mach ich wie folgt:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
VAR List1 : TStringList;
    i : integer;
    Item : TListItem;
    Test : PPROCESS_MEMORY_COUNTERS;
    temp : THandle;
begin
  List1 := TStringlist.Create;
  for i := 0 to List1.Count-1 do
    begin
      Item := ListView1.Items.Add;
      Item.Caption := List1.Strings[i];
      IF GetProcessMemoryInfo(GetWH(List1.Items[i]), Test, SizeOf(Test)) THEN //<- IMMER FALSE!
      Item.SubItems.Add(IntToStr(Test^.PeakWorkingSetSize));
    end;
Die Funktion GetWH ( -> getwindowhandle) sieht so aus:

Delphi-Quellcode:
function GetWH(AExeName: string): THandle;
var
  SnapShot: THandle;
  p: TProcessEntry32;
  ProcessHandle: THandle;
begin
  Result := 0;
  WindowHandle := 0;
  ProcessHandle := 0;
  p.dwSize := SizeOf(p);
  SnapShot := CreateToolhelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    if Process32First(SnapShot, p) then
      repeat
      if AnsiLowerCase(AExeName) = AnsiLowerCase(p.szExeFile) then
        ProcessHandle := p.th32ProcessID;
      until (ProcessHandle <> 0) or not Process32Next(SnapShot, p);
    EnumWindows(@MyEnumWindowProc, ProcessHandle);
    Result := WindowHandle;
  finally
    CloseHandle(SnapShot);
  end;
end;
Leider wird mir nichts zurück-geliefert, da die IF-Anweisung immer false ergibt.
Gruß St.Pauli
  Mit Zitat antworten Zitat