当一个程序(a.exe)启动时启动另外一个程序(b.exe)环境:WIN2000英文版
代码如下:
if (CreateProcess( "c:\b.exe",
NULL,
NULL,
NULL,
true,
CREATE_DEFAULT_ERROR_MODE|CREATE_NO_WINDOW,
NULL,
WorkingDir,
&startInfo,
&processInfo ) == false)
return false;现象:重启计算机后第一次运行a.exe报下面错误(日志中记录):
The application, , generated an application error The error occurred on 08/06/2002 @ 15:28:26.240 The exception generated was c0000005 at address 77FC9114 (_eFSQRT) b.exe程序关闭退出A.EXE程序再次运行
正常另,该操作再win2000中文版中VC6下调试运行正常
这种现象是不是跟CreateProcess有关??
代码如下:
if (CreateProcess( "c:\b.exe",
NULL,
NULL,
NULL,
true,
CREATE_DEFAULT_ERROR_MODE|CREATE_NO_WINDOW,
NULL,
WorkingDir,
&startInfo,
&processInfo ) == false)
return false;现象:重启计算机后第一次运行a.exe报下面错误(日志中记录):
The application, , generated an application error The error occurred on 08/06/2002 @ 15:28:26.240 The exception generated was c0000005 at address 77FC9114 (_eFSQRT) b.exe程序关闭退出A.EXE程序再次运行
正常另,该操作再win2000中文版中VC6下调试运行正常
这种现象是不是跟CreateProcess有关??
改为
"c:\\b.exe"
试试,现象还能重现吗?
STARTUPINFO si; ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) ); si.wShowWindow=SW_HIDE;
si.dwFlags=STARTF_USESHOWWINDOW;
char ce[1024];
strcpy(ce,m_szCmd);
BOOL fRet=CreateProcess(NULL, "c:\\b.exe"
NULL,
NULL,
FALSE,
NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
&pi);
memset( &startInfo, 0, sizeof(STARTUPINFO) );
memset( &processInfo, 0, sizeof(PROCESS_INFORMATION) );
{
PROCESS_INFORMATION pi;
STARTUPINFO si;
si.cb=sizeof(si);
si.wShowWindow=SW_SHOW;
si.dwFlags=STARTF_USESHOWWINDOW;
BOOL fRet=CreateProcess(NULL,
"d:\\temp\\disk1\\setup.exe -r",
NULL,
NULL,
FALSE,
NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
&pi);
if(fRet)
{
m_hPro=pi.hProcess;//保存当前进程句柄,在强制结束进程时使用。
}
if(::WaitForSingleObject(m_hPro,INFINITE)==WAIT_OBJECT_0)
{
AfxMessageBox("the Process is go over");
}
CloseHandle(m_hPro);
return 0;
}