我想制作一个简单的C ++程序,它使用{{3}}一次运行多个exe文件。如果exe文件无效(填充了随机数据),则会出现一个消息框,表示该文件与64位Windows不兼容,这很好,但我的程序会等到消息框关闭。有没有办法绕过这个?
答案 0 :(得分:6)
您需要通过调用SetErrorMode
来更改流程的错误处理政策。您应该在程序的最开始,启动期间执行此操作。
SetErrorMode(SetErrorMode(0) | SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS
| SEM_NOOPENFILEERRORBOX);
我认为SEM_FAILCRITICALERRORS
是与您当前问题相关的标志,但您也应该包括其他问题。
请注意,至少在旧版本的Windows中,没有功能可以简单地获取当前的错误模式。 Vista中添加了GetErrorMode
功能。所以我们调用SetErrorMode(0)
来返回先前的错误模式。这个有点不方便的API设计在Raymond Chen的文章中讨论:Disabling the program crash dialog。当然,如果你不再支持XP,你可以使用:
SetErrorMode(GetErrorMode() | SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS
| SEM_NOOPENFILEERRORBOX);