如何检测是否有任何应用程序进入全屏或退出全屏?

How to detect if any app goes fullscreen or exiting fullscreen?

本文关键字:退出 应用程序 任何 何检测 检测 是否      更新时间:2023-10-16

当有另一个应用程序全屏(如PowerPoint或VLC)时,我需要在我的应用程序中禁用通知,以免打扰用户。

现在,我得到了这段代码,但它总是返回 true。是否有一些应用程序全屏。我不确定这是否仅适用于应用栏或任务栏。

HWND  hWnd;
hWnd = FindWindow(L"Shell_TrayWnd", nullptr);
if( hWnd )
{
APPBARDATA apd;
apd.cbSize = sizeof(APPBARDATA);
apd.hWnd = hWnd;
bool uState = bool(SHAppBarMessage(ABN_FULLSCREENAPP , &apd));
if(uState)
qDebug()<<"fullscreen";
else
qDebug()<<"not fullscreen";
}

ABN_FULLSCREENAPP不是发送到 shell 的消息,而是当应用程序进入或离开全屏模式时 shell 发送给你的消息。 该消息将发送给使用ABM_NEW创建的应用栏的所有者。

文档在这里。

我对文档的解读是,您必须创建一个应用栏才能接收此消息,但如果要隐藏它,您可以使用ABM_SETPOS将其设置为零高度或宽度。