void CTry8View::OnMenuShellexe() 
{
   ShellExecute(this->m_hWnd,"open","chem.exe",NULL,NULL,SW_SHOW);
}在chem.exe,执行过程中需要返回消息给调用窗口,告诉调用它的CTry8View类该程序已经完成了某操作。需要在两个程序中分别加入哪些语句?谢谢!

解决方案 »

  1.   

    在chem中用FindWindow()找到CTray8View所在程序的窗口,发送消息
    给该窗口即可
      

  2.   

    和其他进程间通信的原理一样,可以用Message或Mutex(推荐,因为不需要窗口句柄),参见RegisterWindowMessage和CreateMutex
      

  3.   

    使用CreateProceess替代shellexecute
      

  4.   

    i suggest you use createprocess
     PROCESS_INFORMATION pi;
    STARTUPINFO si;
    si.cb=sizeof(si);
    si.wShowWindow=SW_SHOW;
    si.dwFlags=STARTF_USESHOWWINDOW;
    BOOL fRet=CreateProcess(NULL,
                      "d:\\temp\\disk1\\setup.exe -r",
                      NULL,
                      NULL,
                      FALSE,
                      NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,
                      NULL,
                      NULL,
                      &si,
                      &pi);
    if(fRet)
    {
    m_hPro=pi.hProcess;//保存当前进程句柄,在强制结束进程时使用。
    }
    if(::WaitForSingleObject(m_hPro,INFINITE)==WAIT_OBJECT_0)
    {
         AfxMessageBox("the Process is go over");
    }
    CloseHandle(m_hPro);
    return 0;