15,979
社区成员
发帖
与我相关
我的任务
分享
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* 函数名称:IsForegroundFullscreen
* 功能说明:判断当前正在与用户交互的当前激活窗口是否是全屏的。
* 参数说明:无
* 返回说明:true:是。
false:否。
* 线程安全:是
* 调用样例:IsForegroundFullscreen (),表示判断当前正在与用户交互的当前激活窗口是否是全屏的。
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
bool CFunc::IsForegroundFullscreen ()
{
bool bFullscreen = false;//存放当前激活窗口是否是全屏的,true表示是,false表示不是
HWND hWnd;
RECT rcApp;
RECT rcDesk;
hWnd = GetForegroundWindow ();//获取当前正在与用户交互的当前激活窗口句柄
if ((hWnd != GetDesktopWindow ()) && (hWnd != GetShellWindow ()))//如果当前激活窗口不是桌面窗口,也不是控制台窗口
{
GetWindowRect (hWnd, &rcApp);//获取当前激活窗口的坐标
GetWindowRect (GetDesktopWindow(), &rcDesk);//根据桌面窗口句柄,获取整个屏幕的坐标
if (rcApp.left <= rcDesk.left && //如果当前激活窗口的坐标完全覆盖住桌面窗口,就表示当前激活窗口是全屏的
rcApp.top <= rcDesk.top &&
rcApp.right >= rcDesk.right &&
rcApp.bottom >= rcDesk.bottom)
{
char szTemp[100];
if (GetClassName (hWnd, szTemp, sizeof (szTemp)) > 0)//如果获取当前激活窗口的类名成功
{
if (strcmp (szTemp, "WorkerW") != 0)//如果不是桌面窗口的类名,就认为当前激活窗口是全屏窗口
bFullscreen = true;
}
else bFullscreen = true;//如果获取失败,就认为当前激活窗口是全屏窗口
}
}//如果当前激活窗口是桌面窗口,或者是控制台窗口,就直接返回不是全屏
return bFullscreen;
}
#include <windows.h>
#include <tchar.h>
#include <iostream>
bool CheckFullscreen()
{
bool bFullScreen = false;
HWND hWnd = GetForegroundWindow();
if (hWnd != GetDesktopWindow() && hWnd != GetShellWindow()){
RECT rcApp, rcDesk;
GetWindowRect(GetDesktopWindow(), &rcDesk);
GetWindowRect(hWnd, &rcApp);
if (rcApp.left <= rcDesk.left
&& rcApp.top <= rcDesk.top
&& rcApp.right >= rcDesk.right
&& rcApp.bottom >= rcDesk.bottom)
{
bFullScreen = true;
}
if (bFullScreen){
TCHAR cls[128] = { 0 };
GetClassName(hWnd, cls, _countof(cls));
if (_tcscmp(cls, _T("WorkerW")) == 0){
bFullScreen = false;
}
}
}
return bFullScreen;
}
int main()
{
for (;;){
std::cout << (CheckFullscreen() ? "有" : "没有") << "窗口全屏~\n";
Sleep(1000);
}
return 0;
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* 函数名称:IsForegroundFullscreen
* 功能说明:判断当前正在与用户交互的前台窗口是否是全屏的。
* 参数说明:无
* 返回说明:true:是。
false:否。
* 线程安全:是
* 调用样例:IsForegroundFullscreen (),表示判断当前正在与用户交互的前台窗口是否是全屏的。
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
bool IsForegroundFullscreen ()
{
bool bFullscreen = false;//存放前台窗口是否是全屏的,true表示是,false表示不是
HWND hWnd;
RECT rcApp;
RECT rcDesk;
hWnd = GetForegroundWindow ();//获取当前正在与用户交互的前台窗口句柄
if ((hWnd != GetDesktopWindow ()) && (hWnd != GetShellWindow ()))//如果前台窗口不是桌面窗口,也不是控制台窗口
{
GetWindowRect (hWnd, &rcApp);//获取前台窗口的坐标
GetWindowRect (GetDesktopWindow(), &rcDesk);//根据桌面窗口句柄,获取整个屏幕的坐标
if (rcApp.left <= rcDesk.left && //如果前台窗口的坐标完全覆盖住桌面窗口,就表示前台窗口是全屏的
rcApp.top <= rcDesk.top &&
rcApp.right >= rcDesk.right &&
rcApp.bottom >= rcDesk.bottom)
{
bFullscreen = true;
}
}//如果前台窗口是桌面窗口,或者是控制台窗口,就直接返回不是全屏
return bFullscreen;
}