L'envoi d'un clic de souris à un bouton dans la barre des tâches à l'aide de C#
Question
Dans une application que je suis en train de travailler, une exigence est d'apporter une fenêtre d'une application externe à l'avant-plan.Faire des appels Win32 API comme BringWindowToTop et SetForeground fenêtre ne fonctionne pas tout le temps.Cela est dû à certaines restrictions dans Windows XP.Ce que je voudrais faire, c'est envoyer à simuler un clic de souris de la fenêtre, le bouton sur la barre des tâches qui, je l'espère, apportera de la fenêtre à l'avant.Personne ne sait comment cela est possible?
La solution
Consultez la section "Comment voler l'accent sur 2K/XP" à http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx, car c'est exactement ce dont vous avez besoin.Je n'irais pas la barre des tâches route que la barre des tâches peut être cachée ou tout simplement pas là.
Autres conseils
Il est possible de faire.Mais il est extrêmement sommaires.Votre demande peut également rompre avec la prochaine version de Windows, car il est sans-papiers.Ce que vous devez faire est de trouver la poignée de la fenêtre de la barre des tâches, puis de trouver le handle de fenêtre de la fenêtre enfant représentant le bouton, puis de l'envoyer à un WM_MOUSEDOWN (je pense) message.
Voici un peu de temps à trouver la poignée de la fenêtre de la barre des tâches:
FWIW, les restrictions sur BringWindowToTop/SetForeground sont là parce que c'est irritant quand une fenêtre vole focus.Qui ne peut pas d'importance si vous travaillez dans un environnement d'entreprise.Il suffit de garder à l'esprit.:)
Je l'utilise dans un programme où j'ai eu besoin de simuler les clics et les mouvements de la souris;
Pour être honnête, je n'ai jamais eu un problème en apportant une fenêtre au premier plan sur XP/Vista/2003/2000.
Vous devez vous assurer que vous effectuez les opérations suivantes:
- Vérifier si IsIconic (réduite)
- Si #1 résultats en vrai, alors l'appel ShowWindow passant SW_RESTORE
- Appelez ensuite SetForegroundWindow
Je n'ai jamais eu de problèmes qui, je pense, de le faire avec ces étapes.