用CreateProcess()创建进程,并取得进程Handle,然后用WaitForSingleObject()等待。

解决方案 »

  1.   

    我的想法与楼上相同,但最好在程序中再开一个辅助线程,在辅助线程中
    用CreateProcess()启动dos进程,获得dos进程的Handle,然后用WaitForSingleObject()等待执行结束。如果不用辅助线程,主线程会被阻塞。if(::CreateProcess( 
        NULL,"dosapp.exe",
        NULL, NULL, FALSE,NULL,NULL,NULL,&StartUpInfo, &ProcessInfo))
    {
            WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
            
            //执行到此时,dosapp.exe结束
            if(ProcessInfo.hProcess)
                CloseHandle(ProcessInfo.hProcess);
            if(ProcessInfo.hThread)
                CloseHandle(ProcessInfo.hThread);
    }
      

  2.   

    嘿既然问到了,我试过可以用PIPE拿到dos进程的控制台输出。但在WIN2000下什么也拿不到,也没报错。
    请各位大侠多多帮忙,我的问题在〈高分求解!WIN2000下PIPE拿不到控制台输出的信息〉里,目前90分,马上再加分。
      

  3.   

    刚好我也有个类似的问题想问一下?怎样结束一个DOS程序(在98下)呢?
      

  4.   

    to shylake'
      PIPE是何物,我用的是管道,和批处理.
      

  5.   

    to han012(阿毛) 
    if(::CreateProcess( 
        NULL,"dosapp.exe",
        NULL, NULL, FALSE,NULL,NULL,NULL,&StartUpInfo, &ProcessInfo))
    {
            WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
            
            //执行到此时,dosapp.exe结束
            if(ProcessInfo.hProcess)
                CloseHandle(ProcessInfo.hProcess);
            if(ProcessInfo.hThread)
                CloseHandle(ProcessInfo.hThread);

        开进程的时候老是出错,是不是要初始化StartUpInfo
      

  6.   

    help!!!!
    if(::CreateProcess( 
        NULL,"dosapp.exe",
        NULL, NULL, FALSE,NULL,NULL,NULL,&StartUpInfo, &ProcessInfo))
    {
            WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
            
            //执行到此时,dosapp.exe结束
            if(ProcessInfo.hProcess)
                CloseHandle(ProcessInfo.hProcess);
            if(ProcessInfo.hThread)
                CloseHandle(ProcessInfo.hThread);

        开进程的时候老是出错,是不是要初始化StartUpInfo 
      

  7.   

    To qiaoyu2k(joan22):必须初始化StartUpInfo。可以简单清0
     
    ::memset(&StartUpInfo, NULL, sizeof(StartUpInfo));
      

  8.   

    to:qiaoyu2k
    pipe 不就是管道?!!!
    有没有大侠帮忙做个例程,可以在WIN2000下用类似方法拿到控制台的输出的?200分!现在我的问题暂时只能加到103分,但我有可用分三千多呢,一定兑现!!!!!!!!
    我用的方法跟诸位的方法是一样的。