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