如果某些应用程序当前以全屏模式运行,我需要检测。如果是,那么我必须停止我的申请。那我怎么能发现呢? 附: Win32 C ++
如果某些应用程序当前以全屏模式运行,我需要检测。如果是,那么我必须停止我的申请。那我怎么能发现呢? 附: Win32 C ++
hWnd = GetForegroundWindow();
RECT appBounds;
RECT rc;
GetWindowRect(GetDesktopWindow(), &rc);
然后检查该窗口是不是桌面还是shell。 简单的指令。
if(hWnd =! GetDesktopWindow() && hWnd != GetShellWindow())
{
GetWindowRect(hWnd, &appBounds);
// Now you just have to compare rc to appBounds
}
这是没有测试的。
hWnd = GetForegroundWindow();
RECT appBounds;
RECT rc;
GetWindowRect(GetDesktopWindow(), &rc);
然后检查该窗口是不是桌面还是shell。 简单的指令。
if(hWnd =! GetDesktopWindow() && hWnd != GetShellWindow())
{
GetWindowRect(hWnd, &appBounds);
// Now you just have to compare rc to appBounds
}
这是没有测试的。
全面实施Hooch的答案:
bool isFullscreen(HWND window)
{
RECT a, b;
GetWindowRect(window, &a);
GetWindowRect(GetDesktopWindow(), &b);
return (a.left == b.left &&
a.top == b.top &&
a.right == b.right &&
a.bottom == b.bottom);
}
public static boolean isFullScreen()
{
WinDef.HWND foregroundWindow = GetForegroundWindow();
WinDef.RECT foregroundRectangle = new WinDef.RECT();
WinDef.RECT desktopWindowRectangle = new WinDef.RECT();
User32.INSTANCE.GetWindowRect(foregroundWindow, foregroundRectangle);
WinDef.HWND desktopWindow = User32.INSTANCE.GetDesktopWindow();
User32.INSTANCE.GetWindowRect(desktopWindow, desktopWindowRectangle);
return foregroundRectangle.toString().equals(desktopWindowRectangle.toString());
}
请注意 toString()
底部的比较是一个小的黑客,以避免比较4个元素彼此。