急问:怎么强制结束掉一个弹出内存异常对话框的进程
急问:如何强制结束掉一个弹出内存错误对话框的进程
if( CreateProcess( NULL, (LPSTR)(LPCSTR)csCmd, NULL, NULL, FALSE, 0, 0, NULL, &StartupInfo, &pi ) )
{
//changed by zyg//////////////////////////////////////////
// if(pi.hProcess)
// WaitForSingleObject(pi.hProcess, INFINITE);
// CloseHandle(pi.hProcess);
if (pi.hProcess && IfWait) {
while (WaitForSingleObject(pi.hProcess, 0)!=WAIT_OBJECT_0) {
int ret;
if (pRespondOtherMsg) ret=(*pRespondOtherMsg)(NULL);
if (ret==-1) {//-1:cancel
if (TerminateProcess(pi.hProcess,-1))
CloseHandle(pi.hProcess);
return -1;
}
Sleep(100);
}
CloseHandle(pi.hProcess);
}
//////////////////////////////////////////////////////////
return TRUE;
}
else
return FALSE;
发现这里TerminateProcess不会起作用
有没有办法?
------解决方案--------------------
CreateProcess以调试模式启动,这样可以处理该进程的错误信息
------解决方案--------------------
用EnumWindows的方法找到那个对话框,给他发送WM_CLOSE消息,然后它应该会退出的。
------解决方案--------------------
非正道。弹出内存错误对话框说明程序有问题。
------解决方案--------------------
象上面说的那样,正道就是要解决你这个额外程序中的问题.
如果一定要强制结束的话,可在命令行启动程序的时候记录下这个进程的相关信息.适当的时候再结束它.但是,你怎么知道它是否弹出了内存错误信息呢?
if( CreateProcess( NULL, (LPSTR)(LPCSTR)csCmd, NULL, NULL, FALSE, 0, 0, NULL, &StartupInfo, &pi ) )
{
//changed by zyg//////////////////////////////////////////
// if(pi.hProcess)
// WaitForSingleObject(pi.hProcess, INFINITE);
// CloseHandle(pi.hProcess);
if (pi.hProcess && IfWait) {
while (WaitForSingleObject(pi.hProcess, 0)!=WAIT_OBJECT_0) {
int ret;
if (pRespondOtherMsg) ret=(*pRespondOtherMsg)(NULL);
if (ret==-1) {//-1:cancel
if (TerminateProcess(pi.hProcess,-1))
CloseHandle(pi.hProcess);
return -1;
}
Sleep(100);
}
CloseHandle(pi.hProcess);
}
//////////////////////////////////////////////////////////
return TRUE;
}
else
return FALSE;
发现这里TerminateProcess不会起作用
有没有办法?
------解决方案--------------------
CreateProcess以调试模式启动,这样可以处理该进程的错误信息
------解决方案--------------------
用EnumWindows的方法找到那个对话框,给他发送WM_CLOSE消息,然后它应该会退出的。
------解决方案--------------------
非正道。弹出内存错误对话框说明程序有问题。
------解决方案--------------------
象上面说的那样,正道就是要解决你这个额外程序中的问题.
如果一定要强制结束的话,可在命令行启动程序的时候记录下这个进程的相关信息.适当的时候再结束它.但是,你怎么知道它是否弹出了内存错误信息呢?