Я создаю замену alt-tab для Vista, но у меня возникают проблемы со списком всех активных программ.
Я использую EnumWindows для получения списка Windows, но этот список огромен. Он содержит около 400 элементов, когда у меня открыто только 10 окон. Кажется, это hwnd для каждого элемента управления и многих других вещей.
Так что мне нужно как-то отфильтровать этот список, но я не могу сделать это точно так, как это делает alt-tab.
Это код, который я использую для фильтрации списка прямо сейчас. Это работает довольно хорошо, но я получаю некоторые нежелательные окна, такие как отдельные окна инструментов в Visual Studio, и я также скучаю по окнам, таким как iTunes и Warcraft3.
private bool ShouldWindowBeDisplayed(IntPtr window)
{
uint windowStyles = Win32.GetWindowLong(window, GWL.GWL_STYLE);
if (((uint)WindowStyles.WS_VISIBLE & windowStyles) != (uint)WindowStyles.WS_VISIBLE ||
((uint)WindowExStyles.WS_EX_APPWINDOW & windowStyles) != (uint)WindowExStyles.WS_EX_APPWINDOW)
{
return true;
}
return false;
}