各位大侠,帮一帮啊,我在win2000中使用这个函数,来等待一个进程结束,
可以正常使用,返回值是WAIT_OBJECT_0,但是在WIN98下南,返回值总是WAIT_TIMEOUT.该怎么解决这个问题啊,急用啊

解决方案 »

  1.   

    WaitForSingleObject(...,WAIT_TIMEOUT);
    就行了,不过只可是一直等的。不管多长时间
      

  2.   

    错了,是WaitForSingleObject(HANDLE,INFINITE);
      

  3.   

    下面是我部分源代码,我想达到在win2000下面的效果
    tSuccess=CreateProcess( NULL,cmd,NULL, NULL,FALSE, 0, NULL,exePath, &startup, &process );
    if( tSuccess )
    {
    DWORD dwRect = WaitForSingleObject(process.hProcess, INFINITE);
             switch(dwRet)
            {
               case :
               case WAIT_OBJECT_0:
               {
                    正常情况下从这里退出。
                }
                    .
                    .
             }
    CloseHandle( process.hProcess );
             CloseHandle( process.hThread );//*/
    }
      

  4.   

    STARTUPINFO StartupInfo={0};
    PROCESS_INFORMATION ProcessInfo;
    StartupInfo.cb=sizeof(STARTUPINFO);
    if(CreateProcess(NULL,cmdline.GetBuffer(0),NULL,NULL,FALSE,0,NULL,
    NULL,&StartupInfo,&ProcessInfo))
    {
    WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
      

  5.   

    WaitForSingleObject(hProsess,INFINITE);INFINITE的意思就是无限制地等下去!!!一直等到hProcess这个进程结束
      

  6.   

    老天,WaitForSingleObject(hProsess,INFINITE);
    等到的结果一定是==WAIT_OBJECT_0. 不然线程就阻塞在那里一直死了.
    还判断啥!!
    正确的可以
    if (WaitForSingleObject(hProsess,0)== WAIT_OBJECT_0)
    {
       //线程结束...
    }
    else
    {
      //仍然在运行中...
    }
    0为一个查讯时间. 也可以写成以毫秒为单位的其他时间,INFINITE为永久等待.
      

  7.   

    但是在WIN2000下,用INFINITE为第二参数时,能进程结束时,返回了WAIT_OBJEECT_0,可是在Win98下时,程序就死到这里了,当为别的参数时,
    比如12000时,则总是返回TIME_OUT.
      

  8.   

    但是在WIN2000下,用INFINITE为第二参数时,进程能结束时,返回了WAIT_OBJEECT_0,可是在Win98下时,程序就死到这里了,当为别的参数时,
    比如12000时,则总是返回TIME_OUT.大家帮着找一下原因,不胜感激!!
      

  9.   

    在你启动的进程内CreateEvent(NULL,TRUE,FALSE,"NAME");
    在退出时SetEvent()然后SleepEx(300,false);然后在
    if( tSuccess )
    {
        OpenEvent()
        if(WaitForSingleObject(。,30)!=WAIT_TIMEOUT)
        {
            //你启动的进程退出了
         }