怎么让目标窗口最大化,这个简单的需求为什么这么难以实现
如何让目标窗口最大化,这个简单的需求为什么这么难以实现?
目标最小化的时候,我获取目标窗口句柄(我已经搞到了,所以句柄这个不回回帖) 最大化,且将目标窗口顶到桌面的最前面。 另外代码要可以反复使用, 即:目标最小化时候,点击程序,让目标最大化,如此反复使用。
这是我们的需求。
注: 最小化和 点击目标窗口以外的区域让窗口消失在桌面上, 是2个不同的概念。 请不要混淆, 之所以特意提到这句话,是我发现 很多人提供的代码,只能针对 "点击目标窗口以外的区域让窗口消失在桌面上" 这种情况。
以下是一网友的解决方式:
::PostMessage(hwnd,WM_SYSCOMMAND,SC_MAXIMIZE,0); //最大化
::SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); //hwnd_topmost非常重要
::SetForegroundWindow(hwnd);
这个做法,我试过了,只能针对 "点击目标窗口以外的区域让窗口消失在桌面上" 这种情况,即: 点击目标窗口以外的区域让窗口消失在桌面 这种方式管用. 根本无法针对目标窗口最小化的情况。
------解决方案--------------------
通过你这个测试, 我可以确定, 你的窗口句柄取得不对.
你使用spy++看看, 哪个才是真的主窗口. 句柄是多少, 直接使用spy++得到的句柄来设置, 应该就能生效.
HWND hWnd = (HWND)0xXXXXXX;//spy++中看到的句柄值.
再使用ShowWindow(hWnd,SW_HIDE);看是否能隐藏.
目标最小化的时候,我获取目标窗口句柄(我已经搞到了,所以句柄这个不回回帖) 最大化,且将目标窗口顶到桌面的最前面。 另外代码要可以反复使用, 即:目标最小化时候,点击程序,让目标最大化,如此反复使用。
这是我们的需求。
注: 最小化和 点击目标窗口以外的区域让窗口消失在桌面上, 是2个不同的概念。 请不要混淆, 之所以特意提到这句话,是我发现 很多人提供的代码,只能针对 "点击目标窗口以外的区域让窗口消失在桌面上" 这种情况。
以下是一网友的解决方式:
::PostMessage(hwnd,WM_SYSCOMMAND,SC_MAXIMIZE,0); //最大化
::SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); //hwnd_topmost非常重要
::SetForegroundWindow(hwnd);
这个做法,我试过了,只能针对 "点击目标窗口以外的区域让窗口消失在桌面上" 这种情况,即: 点击目标窗口以外的区域让窗口消失在桌面 这种方式管用. 根本无法针对目标窗口最小化的情况。
------解决方案--------------------
通过你这个测试, 我可以确定, 你的窗口句柄取得不对.
你使用spy++看看, 哪个才是真的主窗口. 句柄是多少, 直接使用spy++得到的句柄来设置, 应该就能生效.
HWND hWnd = (HWND)0xXXXXXX;//spy++中看到的句柄值.
再使用ShowWindow(hWnd,SW_HIDE);看是否能隐藏.