Ich glaub, ich hab jetzt ne Ahnung wieso das nicht geht. {3} und {4} gehen leider nicht, weil ReadFile einfach blockiert statt einen Fehler zurückzuliefern sobald das Programm beendet wurde.
Und {1} und {2} funktionieren prinzipiell, allerdings muss bei beiden länger gewartet werden. Also muss ich bei WaitForSingleObject() die TimeOut-Zeit hochsetzten oder vor GetExitCodeProcess() ein Sleep() setzen, dann gehts (jedenfalls meistens...).
Denn ich vermute es ist vereinfacht so:
ReadFile() benötigt im Normalfall angenommen 1ms. Wenn ich dann bei {1} oder {2} 99ms warte, dann führt der Thread beim Beenden des Programms zu 1% gerade das ReadFile aus und zu 99% {1} oder {2}. Somit wird es zu 1% blockiert und funktioniert zu 99%.
Ich versteh nur nicht wieso das ReadFile blockiert, das ist doch beschissen