Zitat von
alcaeus:
Du hast deine Anwendung (A) die etwas bestimmtes macht. Nun startest du darin einen Thread, welches prueft, ob ein bestimmtes Programm (B) laeuft. Wenn es nicht gestartet ist, dann hoch damit. Dieser Check sollte ca. 1 mal pro Sekunde gemacht werden: also einmal die PID holen und dann nur noch einen Aufruf von
OpenProcess machen. Schlaegt der fehl, startest du schnellstens Programm B.
Programm B hat nun die Aufgabe, A zu ueberwachen. Dies geschieht gleich wie oben, d.h. wenn A nicht laeuft, wirds gestartet. So, wenn du jetzt einen der Prozesse ueber den Taskmanager abschiesst, wird der andere Prozess diesen sofort wieder starten.
Mit Verlaub, das ist sinnlos. Wenn du es machen willst, dann gleich über einen Launcher. Der kann bspw. mit
ShellExecuteAndWait() oder ähnlichen Funktionen in einer Schleife die Anwendung B immer neu starten. Denn dank der Wait-Funktionen bekommt ShellExecuteAndWait() ja mit, ob und wann sich der "Kindprozeß" (also Programm B) beendet.