如何检测自动隐藏的任务栏是否可见
How to detect if autohidden taskbar is visible or not?
目前我需要在 C++/Qt 中检测设置为"自动隐藏"的任务栏是否在屏幕上可见。我已经尝试了以下解决方案,不幸的是没有成功:
-
使用 uState = (UINT) 检查了自动隐藏状态 SHAppBarMessage(ABM_GETSTATE, pabd),这仅返回是否设置了自动隐藏属性
-
使用 SystemParametersInfo(SPI_GETWORKAREA, 0, &rectWorkArea, 0) 获取工作区;不幸的是,当任务栏设置为"自动隐藏"时,工作区始终是整个屏幕的大小,即使它实际上在屏幕上可见
-
Geting AppBarData with SHAppBarMessage(ABM_GETTASKBARPOS, &abd);使用此功能,我可以获取任务栏的大小和坐标,但是即使任务栏是隐藏的,它们也总是像任务栏可见一样返回。
因此,使用这些方法,我无法判断带有"自动隐藏"的任务栏是否在给定时刻在屏幕上可见:-(
我将不胜感激任何帮助:-)
HWND hTaskbarWnd = FindWindow("Shell_TrayWnd", null);
bool isVisible = IsWindowVisible(hTaskbarWnd);
或
bool IsTaskbarWndVisible() {
HWND hTaskbarWnd = FindWindow("Shell_TrayWnd", null);
HMONITOR hMonitor = MonitorFromWindow(hTaskbarWnd , MONITOR_DEFAULTTONEAREST);
MONITORINFO info = { sizeof(MONITORINFO) };
if (GetMonitorInfo(hMonitor, &info))
{
RECT rect;
GetWindowRect(hTaskbarWnd , &rect);
if ((rect.top >= info.rcMonitor.bottom - 4) ||
(rect.right <= 2) ||
(rect.bottom <= 4) ||
(rect.left >= info.rcMonitor.right - 2))
return false;
return true;
}
相关文章:
- 有没有任务栏API可以立即应用注册表更改
- 如何使用任务栏按钮显示进度条?
- 如何使用QSplashScreen时显示任务栏图标
- 检查任务栏中的当前应用程序吗?(C ,Windows API)
- 获取窗口任务栏项
- q输入对话框使 Unity 任务栏和标题栏在全屏应用程序中可见
- 如何为 QT Windows 应用程序设置不同的桌面快捷方式图标和任务栏图标不同
- 隐藏自定义应用程序窗口,但应在任务栏上显示应用程序图标(不是作为托盘图标)
- 如何在c ++生成器中隐藏任务栏中的表单
- 如何在任务栏上隐藏应用程序
- 使自动隐藏的任务栏在窗口上可见,最大化而不取消隐藏
- 如何在正常用户环境中以编程方式隐藏 Windows 8 上的任务栏
- Windows Mobile 隐藏任务栏和菜单栏
- 如何检测自动隐藏的任务栏是否可见
- 如何在单击任务栏期间捕获隐藏/还原事件
- Win32:是否可以显示窗口,但在任务栏中隐藏它
- 从任务栏中隐藏"Close Window"选项
- 从任务栏隐藏控制台c++程序
- 使任务栏图标在窗口隐藏可见
- 如何隐藏cdialgex从任务栏?(MFC c++)