xiexie!

解决方案 »

  1.   

    用waitforsingleobject啊,具体你查一个MSDN帮助。
      

  2.   

    HWND mHwnd = NULL;
    BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
    {
       DWORD seekId = *(DWORD*)lParam;
       DWORD prcId = 0;   GetWindowThreadProcessId(hwnd,&prcId);
       if(prcId == seekId)
    [  {
          do{
            mHwnd = hwnd;
            hwnd = GetParent(hwnd);
           while(hwnd!=NULL);
          char title[128] = {0};
          GetWindowText(mHwnd, title);
         AfxMessageBox(title,"进程主窗体标题");
        }
    }
    PROCESS_INFORMATION pf;
    if( CreateProcess("你的程序名.exe",NULL, NULL,NULL,TRUE,CREATE_DEFAULT_ERROR_MODE,NULL,NULL,NULL, &pf))
    {
       if( WAIT_TIMEOUT == WaitForSingleObject(pf.hProcess, 60000) )
         {//程序没有退出
            EnumWindows(EnumWindowsProc, pf.dwProcessId);
         }
    }
      

  3.   

    WaitForSingleObject等待进程句柄的返回,可以一直等待,直到进程结束
    也可以设置一个超时,超过时间还没有进程结束,就输出一个超时信息
      

  4.   

    http://blog.csdn.net/jiangsheng/archive/2004/12/31/235432.aspx
      

  5.   

    另外建一个线程,专门等这个进程退出
    MainForm:
        DWORD dwThreadID;
        hWatchThread = ::CreateThread(NULL, 0, WaitForChildExit, NULL, 0, &dwThreadID);DWORD WINAPI WaitForChildExit(LPVOID lpParameter)
    {
        if (::WaitForSingleObject(MainForm->i_piProcInfo.hProcess, INFINITE) != WAIT_FAILED)
            MainForm->OnChildExit();
        return 0;
    }