在程序A中调用MFC做的程序B,如何将B隐藏起来(启动的时候就不能显示出来)
我用ShellExec(.....,SW_HIDE)不行

STARTUPINFO si;
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpDesktop = NULL;
si.lpTitle = NULL;
si.dwFlags = STARTF_USEPOSITION | STARTF_USESHOWWINDOW | STARTF_USESIZE;
si.cbReserved2 = 0;
si.lpReserved2 = NULL;
si.dwX = 100;
si.dwY = 100;
si.wShowWindow = SW_HIDE;
BOOL bres = CreateProcess(NULL,"b.exe",NULL,NULL,false,
NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);
也不行,以上两种方法好像对SDK编写的程序有用,对MFC的程序不起作用,请问有什么方法?

解决方案 »

  1.   

    HWND hwnd=FindWindow(..); // find B's hwnd
    ShowWindow(hwnd,SW_HIDE);
      

  2.   

    将B作成console程序不就可以了吗?
      

  3.   

    si.wShowWindow = SW_SHOWMINIMIZED;
    ...
    BOOL bres = CreateProcess(NULL,"b.exe",NULL,NULL,false,
    NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);
    ...SetForegroundWindow( ); //同时将你的主程序窗口提前
      

  4.   

    我说的是在创建的时候就让它隐藏起来,不能用findWindow的呀
      

  5.   

    san,你用你的方法试过没有?我发现b程序对si.wShowWindow参数不起作用
      

  6.   

    在程序B中的主框架建立时调用:
        AfxGetApp()->m_nCmdShow = SW_HIDE;
      

  7.   

    HWND hwnd=FindWindow(B进程的标题); // find B's hwnd
    ShowWindow(hwnd,SW_HIDE);