需求如下:  在程序A中点击某个按钮来运行一个EXE文件(假设名字为B)。(此EXE文件是单文档程序)如果此时B没有运行,则使用ShellExecute 运行;如果发现B已经运行,则 重新激活此B主窗口,并显示在当前。现在的问题是: 
1>运行了B后,手动点击B主窗口的最小化按钮,最小化到任务栏。
2>再次点击程序A的按钮来激活B的主窗口
3>此时再次手动点击B主窗口的最小化按钮,发现没有效果。(但是最大化和关闭是OK的)
而且在任务栏上右键点击B,发现最小化命令为灰色,不可用。 怀疑是 操作系统中 B的窗口的显示状态还是 最小化的,没有更新备注: 我采用FindowWindow 来查找B的主窗口 句柄我用SetWindowPlacement 来设置窗口状态都没有用。用SetWindowPos也没有效果,请各位大大帮忙,谢谢!

解决方案 »

  1.   

    findwindow后:CWnd::IsIconic
    BOOL IsIconic( ) const;Return ValueNonzero if CWnd is minimized; otherwise 0.ResSpecifies whether CWnd is minimized (iconic).或者:
    BOOL IsIconic(
      HWND hWnd   // handle to window
    );
      

  2.   

    这个不行,IsIconic返回FALSE。我现在是查找任务管理器中的进程,根据进程B的名称来查找的,如果存在则判断B已经开启。
    然后再用FindWindow根据B的主窗口名查找窗口句柄。
    然后再用SetForegroundwindow 和ShowWindow(hwnd,SW_RESTORE)来激活和显示的