C++ 如何判断任务切换程序/任务栏中是否会列出一个窗口?
我正在尝试编写一个函数,该函数将C++ 如何判断任务切换程序/任务栏中是否会列出一个窗口?,c++,windows,taskbar,C++,Windows,Taskbar,我正在尝试编写一个函数,该函数将HWND作为参数,并返回true,如果该窗口将在任务切换器中列出,即按下Alt+Tab时出现的窗口。我不是100%确定,但我认为任务栏中出现的所有窗口也会出现在任务切换程序中。在子窗口的情况下,我希望它检查它的根祖先窗口 现在我正在检查根窗口是否可见及其样式/扩展样式。下面是一些示例代码: bool VisibleInTaskSwitcher(HWND window) { HWND root = GetAncestor(window, GA_ROOT);
HWND
作为参数,并返回true
,如果该窗口将在任务切换器中列出,即按下Alt+Tab时出现的窗口。我不是100%确定,但我认为任务栏中出现的所有窗口也会出现在任务切换程序中。在子窗口的情况下,我希望它检查它的根祖先窗口
现在我正在检查根窗口是否可见及其样式/扩展样式。下面是一些示例代码:
bool VisibleInTaskSwitcher(HWND window) {
HWND root = GetAncestor(window, GA_ROOT);
if (root == NULL || !IsWindowVisible(root)) {
return false;
}
long style = GetWindowLong(root, GWL_EXSTYLE);
if (style & WS_EX_APPWINDOW) {
return true;
}
if (style & WS_EX_TOOLWINDOW || style & WS_EX_NOREDIRECTIONBITMAP) {
return false;
}
return true;
}
这个函数正确吗?有没有其他我错过的窗口不会在任务栏中列出的情况?(或者可能是一种边缘情况,即使它没有通过我函数中的一个测试也会如此?)
我在Windows10中对此进行了测试,发现带有扩展样式的Windows似乎也需要被排除在外。这是正确的做法吗