000
19.05.2004, 19:00 Uhr
~Randy
Gast
|
Hi, ich rufe alle 5 Sekunden eine Funktion rekursiv auf, die mir lediglich alle Prozesse im TManager durchsucht und halt schaut ob ein bestimmter noch läuft. Warum wird die Auslastung im Arbeitsspeicher dadurch erhöht, oder anders gefragt wo habe ich da ein Speicherleck. Die Funktion wird erstmalig im Konstruktor aufgerufen.
Hier mal mein Code:
C++: |
void MyClass::GetProcHandle(CString proc_name) { hSysSnapshot = NULL; act_proc = NULL;
proc1.dwSize = sizeof(proc1); //holen des Handles auf die momentanen Systemprozesse hSysSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 );
Process32First(hSysSnapshot,&proc1); proc1.dwSize = sizeof(proc1); //act_proc_name = proc1.szExeFile;
do { act_proc_name = proc1.szExeFile; if(proc_name.Compare(act_proc_name) == 0) { pid = proc1.th32ProcessID; act_proc = OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid); } }while(Process32Next(hSysSnapshot,&proc1));
if(pid == 0)//DBLogic läuft nicht { WinExec("DBLogic.exe",1); } ::Sleep(1000); GetProcHandle("DBLogic.exe");
}
|
Ach ja, die Definitionen habe ich global gemacht. Vielleicht kann mir jemand helfen, wäre echt klasse !
Randy |