2009-06-27 7 views
0

Je voudrais savoir s'il est possible de savoir si une application externe a une fenêtre qui apparaît dans la barre des tâches. J'ai un programme qui affiche parfois un message d'erreur et il apparaît dans la barre des tâches. Si je "ferme" le message, il deviendra invisible, mais d'après ce que j'ai vu, il existe toujours. La seule façon pour moi de savoir si cette fenêtre est visible et donc "cliquable" est de vérifier si elle est affichée sur la barre des tâches ou non.(Win Api) Vérifiez si une fenêtre d'application externe est dans la barre des tâches

Comment est-ce que je peux faire ceci?

Merci

+0

Peut-être que si je vérifie pour WS_VISIBLE cela fonctionnera aussi, je ne sais pas? –

Répondre

0

espion Première utilisation ++ (livré avec visual studio) pour connaître le nom de la classe, le nom de la fenêtre, et la hiérarchie des fenêtres. Conseil: lorsque le message d'erreur est à l'écran, lancez spy ++, appuyez sur Alt + F3, puis sur Alt + D, puis injectez l'outil de recherche dans la fenêtre du message d'erreur, puis appuyez sur OK. Si la fenêtre est de niveau supérieur (c'est-à-dire que son parent est le bureau), utilisez FindWindow API.

Si la fenêtre n'est pas de niveau supérieur (ie son parent est une autre fenêtre), utilisez d'abord FindWindow pour trouver la fenêtre principale, puis utilisez FindWindowEx (éventuellement récursivement) pour rechercher cette fenêtre de message d'erreur.

0

L'interface COM documentée pour gérer la barre des tâches est ITaskbarList, mais elle vous permet uniquement d'ajouter/de supprimer des boutons, vous ne pouvez pas obtenir une liste des boutons existants.

Ainsi, vous disposez de trois options:

A) Allez dans la terre sans papier, trouver la barre des tâches et le contrôle de l'onglet enfant ou barre d'outils (changé de 2000 à XP) et regardez sa non documentée par des données d'article (IIRC il est un bouton barre des tâches de changement open source application de commande là-bas avec cette info)

B) Vérifiez les styles de la fenêtre vous souciez (WS_VISIBLE et (pas propriétaire ou WS_EX_APPWINDOW) et non WS_EX_TOOLWINDOW) ou quelque chose le long de ces lignes

C) Crochet/sous-classe l'application brisée

Questions connexes