在Windows 10上,您可以按Win + Tab以获取所有窗口的“任务视图”视图。我试图在任何给定时间检查它是否有效。我尝试使用WH_KEYBOARD_LL
的低级键盘钩,但这只允许我检测按键,而不是切换器处于活动状态。我查看了Windows DWM API,但也没有找到任何其他内容。
我也尝试过使用EnumWindows()
和EnumChildWindows(GetDesktopWindow(), ...)
,并且在显示和隐藏任务视图之间的输出中没有发现任何差异。
有没有准确的方法来检测是否显示?
这是一个与我的Windows版本(1709 build 16299.125)非常一致的解决方案,并且不需要处理器密集调用EnumChildWindows
:
bool isTaskView() {
//Get foreground window's name
HWND fgWindow = GetForegroundWindow();
TCHAR windowName[MAX_PATH] = L"";
GetWindowText(fgWindow, windowName, MAX_PATH);
//Compare with magic string name of Task View's window
std::wstring nameStr(windowName);
return nameStr == L"Task View";
}