Énumérer les fenêtres comme alt-tab ne

Je suis de créer un alt-tab de remplacement pour Vista, mais j'ai quelques problèmes d'inscription, tous les programmes actifs.

Je suis en utilisant EnumWindows pour obtenir une liste de Windows, mais cette liste est énorme. Il contient environ 400 articles quand je n'ai que 10 fenêtres ouvertes. Il semble être un hwnd pour chaque unique de contrôle et de beaucoup d'autres choses.

Donc je dois filtrer cette liste en quelque sorte, mais je n'arrive pas à le faire exactement comme alt-tab ne.

C'est le code que j'utilise pour filtrer la liste de droite maintenant. Il fonctionne très bien, mais je reçois des fenêtres intempestives comme détachée outil de windows dans Visual Studio et j'ai aussi manquer de windows comme iTunes et 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;
}
InformationsquelleAutor | 2008-10-16