vc中怎么阻止子进程弹出异常?

来源:百度知道 编辑:UC知道 时间:2024/06/30 01:41:45
在父进程中创建一个子进程(不创建窗口),但如果子进程执行出错,就会弹出出错信息,然后点击中止后才能中止子进程。请问有没有办法让子进程不弹出错误,自己结束呢?
子进程是外部的程序,代码不是我写的,不能用try-catch。。。。

CreateProcess的时候以DEBUG形式创建,创建的时候挂起子进程(就是CREATE_SUSPENDED|DEBUG_ONLY_THIS_PROCESS 参数),然后调用ResumeThread开始执行子进程~~然后下面
DEBUG_EVENT DebugEv;
DWORD dwContinueStatus = DBG_CONTINUE;
while(1)
{
WaitForDebugEvent(&DebugEv, INFINITE);
switch (DebugEv.dwDebugEventCode)
{
case EXCEPTION_ACCESS_VIOLATION://这种访问出错的情况经常发生
break;

}

if(DebugEv.dwDebugEventCode==EXIT_PROCESS_DEBUG_EVENT)
break;

ContinueDebugEvent(DebugEv.dwProcessId, DebugEv.dwThreadId, dwContinueStatus);

}

我在某个程序里就是这么实现的,当然是参照MSDN上的例子的,你可以去查查~~~~~调试模式执行子进程,拦截它发生的异常,这方法挺有用。

catch一下就可以了

HOOK api MessageBoxA
判断是你那个倒霉的进程,就不要调用原来系统的MessageBoxA。