Wenn ich dich richtig verstanden habe,startest du doch nur ein externes Programm mehrmals mit verschiedenen Parametern.
Ja ganz genau.
Ich würde einfach die benötigten TProcesse ohne powaitonexit erzeugen und in eine Objectlist stopfen um dann mit running bzw. Exitstatus prüfen ob sie noch laufen/wie sie beendet wurden.
Das hatte ich Heute auch gemacht. Es läuft auch alles so wie ich es will. Also ich kann jetzt die Anzahl beschränken. Die Geschwindigkeit ist ca. die selbe wie mit Threads(unbegrenzt).
Um den ExitStatus abzufragen habe ich einen Timer verwendet, der die Prozesse in einer TList überprüft (jede Millisekunde). Wenn sie beendet wurden, werden sie dann gelöscht und neue Prozesse von einer Warteliste geholt. Ein OnTerminate Event hat TProcess ja leider nicht, dann müsste es ja auch ohne Timer gehen oder ?
[Edit] So ein Event könnte ich ja einer abgeleiteten Klasse von TProcess hinzufügen. Das werde ich mal noch versuchen.