|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : avril 2007 Messages : 168 ![]() |
Bonjour,
Y a-t-il une autre méthode que : GetForegroundWindow() ou GetActiveWindow() pour connaître depuis une DLL la fenêtre qui est actuellement active sous Windows car je constate que ces deux fonctions ne donnent pas toujours le résultat prévu. En effet, si vous êtes par exemple sous Windows XP avec IE8 comme navigateur, tant que les fenêtres des sites consultés sont stockés en bas de l’écran dans la barre des tâches les deux fonctions donnent le résultat attendu dès que vous activez une de ces fenêtres. Par contre, si les fenêtres consultées n’apparaissent plus dans la barre des tâches parce que IE8 les a prises à son compte et les fait apparaître sous forme d’onglets en haut de l’écran, alors les deux fonctions ne détectent plus les changements quand vous activez une nouvelle fenêtre en passant d’un onglet à l’autre. Il y a même pire les deux fonctions ne détectent pas non plus le changement quand votre précédente fenêtre active était une de celles stockées en bas de l’écran et que vous activez maintenant une fenêtre quelconque de l’onglet ! Quelqu’un connaîtrait-il une méthode infaillible pour déterminer la fenêtre active quel que soit l’endroit où elle est stockée ? Merci |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : avril 2007 Messages : 168 ![]() |
Bonjour,
Bon j’ai la réponse à mon problème : En fait lorsque que je dis que les fenêtres sont parfois présentées par IE8 en haut de l’écran sous forme d’onglets j’ai à moitié tort, car dans ce cas là la fenêtre IE8 est commune pour tous les onglets, chaque onglet n’est pas une fenêtre à part entière mais un contrôle dans la fenêtre commune ce qui explique pourquoi GetForegroundWindow() ne voit pas la différence. On remarquera cependant que lorsqu’on clique sur un des onglets le titre de la fenêtre commune change. Donc, pour savoir si l’utilisateur a changé de fenêtre, le test sur le changement de HWND ne suffit pas, dans le cas où le HWND n’a pas changé il faut aller voir en plus si par exemple le titre n’aurait pas, lui, changé en utilisant par exemple : Longtitre=GetWindowText(activfen, Titrefen, Titrelong); |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : décembre 2003 Messages : 220 ![]() |
Bonjour,
J'ai le même problème. peux-tu m'aider avec ta solution (un extrait de ton code ) ? Merci bien. |
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : décembre 2003 Messages : 220 ![]() |
Salut,
Je crée successivement deux handle, puis je vérifie si les deux handle sont différents ou si les noms sont dirrérents. Mais pour certaines applications, lorsqu'on change d'onglet, le nom de la fenetre ne change pas... les noms sont liés aux onglets. Exemple de Visual Studio Express 2010. Que faire dans ce cas. En passant, j'aimerai savoir si on peut créer une application de type service avec VS Express Edition.. Merci bien |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com