1

Windows 桌面 API 中是否有信号或事件可以告诉我我的应用程序是否处于最小化状态?我查看了 msdn 文档,只发现在应用程序最小化时调用的最小化事件,而不是在应用程序已经完成最小化并处于最终最小化状态时调用。

当我知道我设置的窗口已最小化并且不妨碍屏幕截图时,我需要关闭另一个操作(屏幕截图)。我使用 WM_SIZE 消息检查窗口是否最小化,然后开始屏幕捕获。我的问题是,即使我通过 ProcessWindowMessage 回调收到了 SIZE_MINIMIZED 消息,在截屏时我仍然可以看到应用程序窗口正在关闭(即大多数应用程序窗口完成的最小化动画)。我需要告诉我该应用程序已完全最小化,而不是妨碍我对整个桌面进行的屏幕截图。

谢谢!

4

3 回答 3

2

你可能想要IsIconic();如果您的窗口被最小化,那么 API 将返回非零值。

于 2013-06-10T19:41:48.650 回答
1

我相信您正在寻找WM_SIZE消息。它将在窗口大小更改后发送。如果您的窗口被最小化,则wParam变量应等于SIZE_MINIMIZED

于 2013-06-10T21:03:10.127 回答
0

您可以尝试此处提到的解决方案: 如何检测我的应用程序何时最小化?

~截图:

switch (message)
{
case WM_SYSCOMMAND:
    if ((wParam & 0xFFF0) == SC_MINIMIZE)
    {
        // shrink the application to the notification area
        // ...

        return 0;
    }
    break;
}

或者试试 GetWindowPlacement 函数: https ://msdn.microsoft.com/en-us/library/windows/desktop/ms633518(v=vs.85).aspx

〜剪辑

检索指定窗口的显示状态和恢复、最小化和最大化的位置。

于 2016-03-08T05:48:00.293 回答