代码如下
ShellExecute(NULL, "open", "aa.exe", NULL, NULL, SW_SHOWDEFAULT);aa.exe是一个console程序,完成一定的功能就退出了,没有消息循环.请问,我如何才能让我的主程序(执行shellexecute的程序)与aa.exe同步?
也就是判断aa.exe执行完毕后主程序才继续往执行

解决方案 »

  1.   

    STARTUPINFO stStartUpInfo;
    PROCESS_INFORMATION stProcessInfo;
    memset(&stStartUpInfo,0,sizeof(STARTUPINFO));
    stStartUpInfo.cb = sizeof(STARTUPINFO);
    // szCommandLine放应用程序的路径
    BOOL bOK = CreateProcess(NULL,(LPTSTR)szCommandLine,NULL,NULL,TRUE, NORMAL_PRIORITY_CLASS,NULL,NULL,&stStartUpInfo,&stProcessInfo);
    if ( FALSE == bOK ) {
    return -1;
    }// 等待程序执行完成
    WaitForSingleObject(stProcessInfo.hProcess,INFINITE);
    CloseHandle(stProcessInfo.hProcess);
      

  2.   

    SHELLEXECUTEINFO sei;
    memset(&sei, 0, sizeof(SHELLEXECUTEINFO)); sei.cbSize = sizeof(SHELLEXECUTEINFO);
    sei.fMask = SEE_MASK_NOCLOSEPROCESS;
    sei.lpVerb = _T("open");
    sei.lpFile = _T("aa.exe");
    sei.nShow = SW_SHOWDEFAULT;
    ShellExecuteEx(&sei);WaitForSingleObject(sei.hProcess, INFINITE);
    CloseHandle(sei.hProcess);
      

  3.   

    有一个GetEXitCodeProcess函数用来判断进程的状态,如果STILL_ACTIVE,就知道还没有执行完