Wenn ich
PChar(CommandLine + '')
benutze, gibt es keinen Fehler mehr. Den hattest du bei dir gar nicht, das ist mir gerade aufgefallen, weil du Delphi 2005 hast. Der tritt nur bei
Unicode auf.
Jedenfalls ist das Problem schlicht, dass mspaint gar nicht sichtbar gestartet wird. Deshalb wartet dein Programm nach dem CreateProcess logischerweise unendlich, denn genau das soll der Befehl ja auch machen. Du kannst den neuen Prozess ja auch nicht sehen und beendest ihn daher nicht. Wenn du das gleich am Anfang gesagt hättest, wäre es einfacher gewesen.
Jedenfalls ist die Ursache sehr einfach. Du gibst ja den expliziten Befehl, dass Paint versteckt gestartet werden soll:
Delphi-Quellcode:
StartupInfo.wShowWindow:=SW_HIDE;
//SW_HIDE, also versteckt starten
Probiere es mal mit SW_SHOWNORMAL.