Ich hatte auch mal zum testen einfach alle Speicherseiten ermittelt, die das Programm benutzt und zusammenaddiert. Ob das so funktioniert und sinnvoll ist, weis ich nicht. (Ich meine funktionieren tut es, aber ob das Ergebnis sinnvoll ist?)
Mit virtualquery kann man sich ja so durchhangeln.
Für eine fremde Anwendung könnte evtl virtualqueryEx reichen oder du injizierst den Code gleich in den Prozess, dann kannst du auch gleich localAlloc oder was auch immer hooken.
Beispiel (nur) in Pascal:
Delphi-Quellcode:
function MemoryUse:integer;
var mbi:memory_basic_information;
si:system_info;
pos:cardinal;
begin
getsysteminfo(si);
pos:=cardinal(si.lpMinimumApplicationAddress);
result:=0;
while pos<cardinal(si.lpMaximumApplicationAddress) do begin
virtualquery(pointer(pos),mbi,sizeof(mbi));
if (mbi.State and mem_commit)>0 then inc(result,mbi.RegionSize);
inc(pos,mbi.regionsize);
end;
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.