| sleepyEinsteiger
 
 
  
 Registriert seit: 12.2007
 Beiträge:2
 
 | C++ Speicher Tut2Hallo!
 
 Ich versuche seit ein paar Tagen ein Programm zu schreiben, dass den Speicher einer Anwendung überwacht. Sprich ich möchte die Größe des benutzten Speichers herausfinden.
 Ich habe auch die Tutorials 1+2 gemacht.(zwar nicht alles 100% verstanden, aber sonst sehr NICE).
 Aber hier jetzt meine Frage:
 Ich kann zwar mein Fenster finden. und auch die ID bestimmen. Aber woher
 weiss ich die Speichergröße/n nach der ich suchen muss? Also ich möchte ja den Speicher der gesamten Applikation haben und nicht einer einzelnen
 Variable.
 
 Ich hoffe die Frage ist richtig und verständlich gestellt
 
 Gruß Sleepy
 
 
 | 
| sleepyEinsteiger
 
 
  
 Registriert seit: 12.2007
 Beiträge:2
 
 | C++ Speicher Tutorial 2Ich hab nochmal ein wenig gesucht und auch eine Lösung gefunden.
 Falls es jemanden interessiert:
 
 
 Code:
 
 HWND            hWnd;
 HANDLE          hProc;
 DWORD           ProcID;
 DWORD           Rw = 0;
 unsigned        adrStart    = 0x00000000;
 unsigned        adrEnd      = 0x80000000;
 unsigned char   buffer[4096];
 unsigned long   iBytesRead=0;
 unsigned int      ProcSize;
 MEMORY_BASIC_INFORMATION  mbi;
 
 hWnd = FindWindowA(0, "MeinFenster");
 if(!hWnd)
 return ;
 
 GetWindowThreadProcessId(hWnd, &ProcID);
 
 hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcID);
 adrEnd = 0x80000000;
 
 ProcSize = 0;
 for(; adrStart<adrEnd; adrStart+=4096)
 {
 VirtualQueryEx(hProc, (LPCVOID)adrStart,&mbi,4096);
 
 if(mbi.State==MEM_COMMIT)
 {
 if(ReadProcessMemory(hProc,(LPCVOID)adrStart,&buffer,              sizeof(buffer),&ProcID))
 {
 ProcSize++;
 }
 }
 
 iBytesRead+=4096;
 }
 ProcSize = ProcSize *0.004048f;
 
 
 So komme ich dann an den belegten Speicher des Prozesses. ProcSize liefert mir eine Angabe in MB. Das Ganze ist zwar etwas umständlich, da ich den gesamten Speicher (2GB) durchscanne, aber ich bekomme mein Ergebnis :)
 
 
 Edit: Code tags eingefügt
 
 Gruß Sleepy
 Dieser Beitrag wurde zuletzt am 23.01.2008 15:35 von Simon editiert. 
 
 |