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;

解决方案 »

  1.   

    MSDE安装到一定时间就不再动了?
    消息循环?
      

  2.   

    等待进程结束
    http://www.edacn.net/bbs/get.php?id=23516
      

  3.   

    WaitForSingleObject(pi.hProcess,INFINITE);
    我把上面这句注释掉就能继续执行,不知道是怎么回事?
      

  4.   

    有可能是如下原因:
    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 ;
             。等待
      

  5.   

    WaitForSingleObject(pi.hProcess,INFINITE)的作用是等待MSDE安装进程结束才继续往下执行,你把它注释掉了当然可以往下执行了
      

  6.   

    进程是一个内核对象,当它运行时是处于无信号状态,当它退出时处于有信号状态。
    所以当进程在运行时,调用WaitForSingleObject(pi.hProcess,INFINITE)的线程一直处于
    挂起状态;当进程退出后,调用WaitForSingleObject(pi.hProcess,INFINITE)的线程
    被唤醒,继续往下执行。你参考一下MSDN中的WaitForSingleObject。
      

  7.   


    STARTUPINFO 没有初始化?  这个我有初始化;WaitForSingleObject? 是MSDN安装不能继续,不是等待MSDE安装完成的程序进程不能继续