И «рабочий стол» (просмотр списка рабочих столов в обозревателе поверх реального окна рабочего стола) и панель задач являются реальными окнами, в которых пользователь может «работать» (вкладки вокруг, использование меню и т. Д.)
Если вы хотите найти «реальное» окно переднего плана таким плохим, как вы сами, его лучше всего выбрать для окна в верхней части z-порядка, возможно, что-то вроде:
... enumfunc(hwnd,...)
{
if (GetClassName(hwnd)!= "Shell_TrayWnd")
{
if (IsWindowEnabled(hwnd) && IsWindowVisible(hwnd) && GetWindow(hwnd,GW_OWNER)==NULL)
{
DoSomethingWithRealForegroundWindow(hwnd)
return FALSE
}
}
}
EnumWindows(enumfunc,0)
TaskSwitchXP - это замена alt-tab с открытым исходным кодом, вероятно, он имеет лучший алгоритм, который вы можете использовать ...