var
  bAddr:dword;
  SysInfo:SYSTEM_INFO;
  MemInfo:TMemoryBasicInformation;
  hProc:THandle;
  mt:dword;
begin
  mt:=0;
  hProc:=OpenProcess(PROCESS_ALL_ACCESS,false,GetCurrentProcessId);
  GetSystemInfo(sysinfo);
  bAddr:=dword(sysinfo.lpMinimumApplicationAddress);  while VirtualQueryEx(hProc,pointer(bAddr),meminfo,sizeof(meminfo))<>0 do
    begin
      if (meminfo.State=MEM_COMMIT) then
        begin
          mt:=mt+meminfo.RegionSize;
        end;
      bAddr:=meminfo.RegionSize+dword(meminfo.BaseAddress);
    end;
  ShowMessage(inttostr(mt div 1024));  // 显示值和Windows任务管理器里面的不一样? 为什么.