Wäre es nicht am einfachsten, wenn dein "Watchdog" auch den überwachten Prozeß direkt startet? Somit wäre ein
Handle vorhanden und der Watchdog könnte über eine der Wait*-Funktionen warten. Wenn du das in einer Schleife machst, wird der Prozeß immer wieder neu gestartet.
Abgesehen davon ist WinExec() "deprecated" und deine Timer1-Methode hoch ineffektiv. Aber jedem das seine
Desweiteren ist die Funktion GetProcessID() abgesehen von der Inkompatibilität zu Windows NT 4 nicht generisch funktionsfähig! Leider ist der Puffer nicht groß genug um beliebige EXE-Namen zu halten. Wenn also ein zu langer Name gesucht wird, so wird er nicht gefunden, weil der Puffer zB schon bei ".e" statt ".exe" aufhört.