Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Problem mit ProcessMemory

  Alt 21. Feb 2008, 08:24
Du könntest mit virtualquery durch den Addressraum durchmarschieren.

Edit: Hier hatte ich mal etwas geschrieben.
Abgeändert auf deine Sache:
Delphi-Quellcode:
function getType(Typ:cardinal):string;
begin
  case typ of
    MEM_Image:result:='Image';
    MEM_Private:result:='Private';
    MEM_Mapped:result:='Mapped';
    else result:='';
  end;
end;

procedure TForm1.getmemInfo;
var mbi:memory_basic_information;
    si:system_info;
    pos:cardinal;
begin
  getsysteminfo(si);
  pos:=cardinal(si.lpMinimumApplicationAddress);
  while pos<cardinal(si.lpMaximumApplicationAddress) do begin
    virtualquery(pointer(pos),mbi,sizeof(mbi));
    if ((mbi.State and mem_commit)>0) then
      memo1.Lines.Add(inttohex(integer(mbi.BaseAddress),8)+
                ' Größe: '+inttostr(mbi.RegionSize)+
                ' Type: '+gettype(mbi.type_9));
    inc(pos,mbi.regionsize);
  end;
end;
Für einen anderen Process müsste man sicherlich virtualqueryEx nehmen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat