Einzelnen Beitrag anzeigen

tk_tommy

Registriert seit: 13. Feb 2005
Ort: Oldenburg
1 Beiträge
 
#1

Prozesshandles

  Alt 22. Feb 2013, 13:44
HI!

Ich habe folgendes Problem.

- Ich starte aus meinem Programm heraus ein anderes Programm mit CreateProcess.
- Die Prozess-ID wird gesichert.
- Nach einiger Zeit wird der Prozess von mir beendet. (Terminate)
- Im Win7-Taskmanager werden aber ständig die Handles hochgezählt.
Nach einigen Stunden habe ich bereits über 2000 Handles.

Code-Ausschnitt
- Prozess erstellen

if(CreateProcess(Nil,pchar(pProgramName + ' ' + uebergabe),nil,nil,false,NORMAL_PRIORITY_CLASS,nil ,nil,StartupInfo,ProcessInfo) = true) then begin;
GetExitCodeProcess(ProcessInfo.hProcess,exestatus) ;
if(exestatus = STATUS_PENDING) then begin;
vResult := ProcessInfo.hProcess;
ThreadId := ProcessInfo.hThread;
pdwProcessId := ProcessInfo.dwProcessId;
end;
end;


- Prozess beenden

procid := OpenProcess(PROCESS_TERMINATE, false, strtoint(pid));
if(procid <> 0) then begin;
// ExitCode laden
GetExitCodeProcess(procid,processstatus);
// Prozess beenden
if(terminateprocess(procid,processstatus) = true) then begin;
try closehandle(procid); except end;
status := true;
end
end;


- Prozess prüfen

procid := OpenProcess(PROCESS_TERMINATE, false, strtoint(pid));
if(procid <> 0) then begin;
status := true;
end;



Wenn ich nach Beendigung des Prozesses prüfe, ob der Prozess noch läuft, wird der beendete Prozess gefunden????


Wie kann ich das verhindern? / Wo liegt der Fehler


Grüße Tommy
Let me show you the World with my Eyes
  Mit Zitat antworten Zitat