É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;
}
Vous devez vous connecter pour publier un commentaire.
Raymond Chen répondu à cette question, un tout à l'arrière
(https://devblogs.microsoft.com/oldnewthing/20071008-00/?p=24863):
Suivez le lien pour Chen entrée de blog pour plus de détails et quelques angle conditions.
WS_EX_TOOLWINDOW
etWS_EX_APPWINDOW
étendue des styles mentionnés dans son billet de blog.Merci Mike B.
L'exemple de Raymonds blog m'a orienté dans la bonne direction.
Il existe cependant quelques exceptions qui doit être fait, Windows Live messenger a beaucoup de hacks pour créer des ombres sous les fenêtres, etc...: @
Voici mon code complet, ont été l'utiliser pour un jour maintenant et havn pas remarqué de différences par rapport au réel alt tab. Il y a un peu de code sous-jacent n'est pas publié mais ça ne pose aucun problème à comprendre ce qu'il fait. 🙂