BOOL bRtn; PROCESS_INFORMATION pi;
STARTUPINFO si = {sizeof(si)};
//strExec是一个字符串,存储有MSDE的安装文件路径
bRtn = CreateProcess(strExec,NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi); if (bRtn)
{
//如果在这里加个AfxMessageBox("等待"),然后在弹出时不管,直到MSDE安装完成就可以
//如果不加那个改成Sleep(600000),与不改是一样的,都是MSDE安装到一定时间就不再动了,哪位大侠指点一下是怎么回事?我想监视MSDE的安装进度,在安装完成后做其他工作
WaitForSingleObject(pi.hProcess,INFINITE);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
return bRtn;
STARTUPINFO si = {sizeof(si)};
//strExec是一个字符串,存储有MSDE的安装文件路径
bRtn = CreateProcess(strExec,NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi); if (bRtn)
{
//如果在这里加个AfxMessageBox("等待"),然后在弹出时不管,直到MSDE安装完成就可以
//如果不加那个改成Sleep(600000),与不改是一样的,都是MSDE安装到一定时间就不再动了,哪位大侠指点一下是怎么回事?我想监视MSDE的安装进度,在安装完成后做其他工作
WaitForSingleObject(pi.hProcess,INFINITE);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
return bRtn;
消息循环?
http://www.edacn.net/bbs/get.php?id=23516
我把上面这句注释掉就能继续执行,不知道是怎么回事?
1)STARTUPINFO 没有初始化?STARTUPINFO si={0};
以下我的程序,参考以下 //建立新process中打开程序
STARTUPINFO si={0}; //初始化
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
BOOL bRst=::CreateProcess( NULL,
sFileName.GetBuffer( sFileName.GetLength() ),
NULL,NULL,FALSE,0,NULL,
cPath, &si, &pi );
if( !bRst ) return ;
。等待
所以当进程在运行时,调用WaitForSingleObject(pi.hProcess,INFINITE)的线程一直处于
挂起状态;当进程退出后,调用WaitForSingleObject(pi.hProcess,INFINITE)的线程
被唤醒,继续往下执行。你参考一下MSDN中的WaitForSingleObject。
STARTUPINFO 没有初始化? 这个我有初始化;WaitForSingleObject? 是MSDN安装不能继续,不是等待MSDE安装完成的程序进程不能继续