GetForegroundWindow() pas fiable ?!
Roger_Augustin
Messages postés
46
Statut
Membre
-
Roger_Augustin Messages postés 46 Statut Membre -
Roger_Augustin Messages postés 46 Statut Membre -
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
A voir également:
- GetForegroundWindow() pas fiable ?!
- Trustpilot est il fiable - Accueil - Services en ligne
- Huissiersplus fiable - Forum Vos droits sur internet
- Le site eminza est-il fiable - Forum Consommation & Internet
- Vosmms.com fiable ✓ - Forum Mobile
- Ce site est-il fiable ou ça sent l'arnaque svp ? ✓ - Forum Consommation & Internet
1 réponse
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);
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);