I'm not a programmer, as consequence don't take very in count the next text, please:CreateProcess...
WaitForInputIdle( ProcessHandle, INFINITE );
If you can think of any reason why this wouldn't work, let me know.
The behaviour commented above with certain applications, maybe can be related with multi-processors machines, but I don't know sure, also any feedback about this issue was commented by others users.
If this is the case perhaps can be used the function SetProcessAffinityMask in combination with SetThreadIdealProcessor for launch the application in a determinated processor only.
In advance, I apologize if the wrote above is wrong, as I commented I'm not a programmer.
Regards.