Also sieht der Quellcode jetzt so aus:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
pmc: PPROCESS_MEMORY_COUNTERS;
cb: Integer;
PrID: Integer; // processidentifier
begin
PrID := StrToInt('$' + Listbox2.Items.Strings[Listbox1.Itemindex]);
cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
GetMem(pmc, cb);
pmc^.cb := cb;
if GetProcessMemoryInfo(OpenProcess(PROCESS_QUERY_INFORMATION, false, PrID), pmc, cb) then
Label1.Caption := IntToStr(pmc^.WorkingSetSize) + ' Bytes'
else
Label1.Caption := 'Unable to retrieve memory usage structure';
ShowMessage(SysErrorMessage(GetLastError));
FreeMem(pmc);
end;
dann funktioniert es Teilweise, mit 3 verschiedenen Fehlermeldungen, bei verschiedenen Prozessen:
1. Das Fenster hat keine Bildlaufleisten /mal eine interessante Meldung
2. Das
Handle ist ungültig
3. irgendetwas mit nugülter Klasse / nur selten, fast willkürlich
Zu bemerken ist, dass nur bei der zweiten Meldung nix gescheites angezeigt wird, mit den anderen geht es.
Bei dem Quellcode von Christian funktioniert es nahezu bei jedem Prozess. Ich hab dann noch ein
Delphi-Quellcode:
hProc := OpenProcess(PROCESS_QUERY_INFORMATION, false, PrID);
if hProc <> 0 then begin
...
else ShowMessage(SysErrorMessage(GetLastError));
eingebaut und festgestellt, dass dies (bei z.B. svchost.exe die zwei von vier Prozessen die vom SYSTEM ausgeführt werden) ein "Zugriff verweigert" ergibt. Dies war wohl beim obrigen Quellcode der selbe Fehler, halt durch eine andere Fehlermeldung ausgedrückt.
Genieße jede Minute deines Lebens, denn sie wird nicht wieder kommen.