I have a process which I start with CreateProcess, then I wait for it to finish and check its exit code. I do this in batch mode and I don\'t want any message boxes to show
You're dealing with three kinds of abnormal termination:
On Windows, C++ exceptions typically reuse parts of Win32 exception handling. Therefore your method addresses 1 and 3, but misses 2. That's why the message is coming from "Microsoft Visual C++ Runtime Library". You'll need _set_abort_behavior(0, _WRITE_ABORT_MSG) to suppress that.