从另一个线程最大化/最小化窗口

2024-02-29

我试图找出最小化/最大化另一个线程拥有的窗口的正确方法。我的目标窗口可以是全屏的,也可以不是全屏的(无论其状态如何,我应该能够最小化和最大化它)。我尝试过 ShowWindow SW_MINIMIZE、SW_MAXIMIZE、SW_FORCEMINIMIZE 等的各种组合...但我能够实现的唯一结果是在最小化和全屏时恢复它(最大化)ShowWindow(hWnd, SW_RESTORE).

这是我用来检索句柄的代码:

#include <Windows.h>
#include <iostream>

// I'm a console application
int main(int argc, char* argv[]) {
    HWND hWnd = FindWindow(TEXT("MyWindowClass"), NULL);
    if(IsWindow(hWnd)) {
        std::cout << "Window found!" << std::endl;
        SetForegroundWindow(hWnd); // I'll give focus to my window. This is always working.
        if(IsIconic(hWnd))
            ShowWindow(hWnd, SW_RESTORE); // This is working only if the window is minimized while in fullscreen mode
        Sleep(3000);
        ShowWindow(hWnd, SW_MINIMIZE); // Not working. SW_FORCEMINIMIZE, SW_HIDE etc are not working either.
    }
    return 0;
}

经过一整天的努力,我找到了一个可以最小化和最大化窗口的解决方案,无论其状态如何:Post/SendMessage.

最大化它:

PostMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);

要将其最小化:

PostMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从另一个线程最大化/最小化窗口 的相关文章

随机推荐