Interessante Theorie, sollte das Problem aber nichtmal tangieren. Er will schließlich "nur", daß die Konsole nicht angezeigt wird. Das kann man erreichen, indem man bei Startup-Info die entsprechenden Handles für STDIN, STDOUT, STDERR setzt - und zwar auf selbst erzeugte Pipes. Ist man an der Ausgabe interessiert, muß man auch noch lesen was in die Pipes geschrieben wurde.
Für normales ShellExecute mit Warten würde ich nie eine simple CreateProcess-Lösung vorschlagen, weil die meisten der Vorteile von ShellExecute dann nicht annähernd geboten werden. Daher immer sowas wie
ShellExecuteAndWait (
direkt) benutzen. Ist allerdings in diesem Fall - wie im ersten Absatz beschrieben - nicht hilfreich, da ist CreateProcess die einzige Lösung.