检测 Win+Tab 任务视图

Detect Win+Tab Task View

在 Windows 10 上,您可以按 Win+Tab 以 "Task View" 查看所有 windows。我正在尝试检查这是否在任何给定时间处于活动状态。我曾尝试使用带有 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";
}