当exe文件无效时,CreateProcess将等待
CreateProcess waits when exe file is invalid
我想制作一个简单的C++程序,它使用CreateProcess同时运行多个exe文件。如果exe文件无效(填充了随机数据),则会出现一个消息框,说明该文件与64位Windows不兼容,这很好,但我的程序会等待消息框关闭。有办法绕过这个吗?
您需要通过调用SetErrorMode
来更改流程的错误处理策略。您应该在程序刚开始的时候,在启动过程中这样做。
SetErrorMode(SetErrorMode(0) | SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS
| SEM_NOOPENFILEERRORBOX);
我认为SEM_FAILCRITICALERRORS
是与您当前问题相关的标志,但您也应该包括其他标志。
请注意,至少在旧版本的Windows中,没有简单获取当前错误模式的功能。在Vista中添加了GetErrorMode
功能。因此,我们调用SetErrorMode(0)
,它返回以前的错误模式。Raymond Chen的文章中讨论了这种有点不方便的API设计:禁用程序崩溃对话框。当然,如果你不再支持XP,你可以使用:
SetErrorMode(GetErrorMode() | SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS
| SEM_NOOPENFILEERRORBOX);
相关文章:
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 如何让LLDB在成功时退出,在失败时等待
- 调用CreateProcess()并获取字符串的返回值
- 等待整个 omp 块完成,然后再调用第二个函数
- 提升 ASIO - io_service 不要等待连接到线程
- 如何在C++中实现带有packaged_task的异步等待循环?
- 虚假唤醒是否会解锁所有等待线程,甚至是不相关的线程?
- 如何等待窗口隐藏在Qt中?
- 如何在不等待检索的情况下获取C++中的内存位置?
- 等待被迷住了,没有回来
- 等待 WaitForMultipleObjects 窗口中的事件数量可变
- 一个线程等待多个线程事件
- 等待 qthread 终止的正确方法是什么?
- 不可预测的C++睡眠/等待行为
- Bison/flex 在识别规则后等待输入
- 使用记事本C++打开 txt 文件时无需等待
- 接受函数在发送数据包时等待
- 在Visual Studio中运行/调试C ++时,如何在结束时等待输入
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- 当exe文件无效时,CreateProcess将等待