用ShellExecute或别的办法打开另一个可执行文件,怎么让新打开的一直显示在调用窗体之前,类似ShowModal的效果,只有关闭此程序才能将控制权返回?
up有分!

解决方案 »

  1.   

    先CreateThread()调用你想执行的执行文件,
    然后WaitforSingleObject()等待直到执行结束。
      

  2.   

    try wsript.shell.run or wscript.shell.exec
      

  3.   

    先FINDHANDLE,然后将那个SHELLEXECUTE出来的窗体SETWINDOWLONG
    总在最前
    让自己的程序DISABLE
      

  4.   

    回复人: zhmnsw(糖醋鼻子) ( ) 信誉:100  2004-12-09 10:23:00  得分: 0  
     
     
       先FINDHANDLE,然后将那个SHELLEXECUTE出来的窗体SETWINDOWLONG
    总在最前
    让自己的程序DISABLE
      
     
    ////////////////////////////////////////////////////////////////////////////
      然后自己的程序一直FINDHANDLE(),一直FINDHANDLE()直到FIND不到再Enabled 对不对?
      这种方法... 不加评论。
      

  5.   

    SendMessage(handle, WM_CANCELMODE, 0, 0);
      

  6.   

    同意 zijida(深水游鱼,吐泡泡被追殴) 的看法
    FindHandle没试过
    WaitforSingleObject可以解决这个问题
      

  7.   

    tozijida(深水游鱼,吐泡泡被追殴)
      我用WaitforSingleObject()怎么不行,麻烦你能不能贴上几句代码啊,谢谢!!!
      

  8.   

    tozijida(深水游鱼,吐泡泡被追殴)
      现在可以了,但移动上面的窗口后,使下面的窗口“面目全非”,怎么刷新下面的窗口呢???
      

  9.   

    谢谢 回复人: aus(天兵)老兄的支持!
    刚刚看到楼主的回复。刷新下面的窗口可以在调用结束后调用Form的刷新,或者再干脆一些在调用时把原窗口隐藏,调用后再显示,这是zhmnsw(糖醋鼻子)老兄想法的翻版。
      

  10.   

    另外,发一段垃圾代码,以前整理的。
    2.在应用程序中调用其它Windows应用程序
    ****************************************************************
    int ExecuteEXE(char * name)
    {
       BOOL seccessed=FALSE;
       STARTUPINFO si;
          PROCESS_INFORMATION pi;
       BOOL flag;
       TCHAR path[100];
       TCHAR Error[100]="注意:\n\t安装程序没有找到指定的安装文件:";
       strcat(Error,name);
       strcpy(path,name);
       ZeroMemory( &si, sizeof(si) );
           si.cb = sizeof(si);
           ZeroMemory( &pi, sizeof(pi) );   flag=CreateProcess(NULL,path,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
       if(!flag) MessageBox(NULL,Error,"安装程序错误提示",MB_OK);
       else seccessed=TRUE;
       //wait for Process complete.
       WaitForSingleObject( pi.hProcess, INFINITE );       // Close process and thread handles. 
          CloseHandle( pi.hProcess );
           CloseHandle( pi.hThread );
       return seccessed;
    }