GetForegroundWindow() pas fiable ?!

Le Forum Windows XP
Scanner Windows pour détecter les erreurs de registre

Ce que nous vous conseillons :

1. Lisez les réponses ci-dessous où vous trouverez des conseils et de l'aide de la part des autres utilisateurs.

2. Avant de faire des modifications sur votre système ou d'installer des logiciels, nous vous recommandons
    fortement de cliquer ici pour scanner Windows afin de détecter les erreurs de registre.



GetForegroundWindow() pas fiable ?!

Messagepar ArthurAuguste » 09 Mar 2011, 08:22

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
ArthurAuguste
 
Messages: 5
Inscrit le: 09 Mar 2011, 08:12

Re: GetForegroundWindow() pas fiable ?!

Messagepar ArthurAuguste » 09 Mar 2011, 15:40

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);
ArthurAuguste
 
Messages: 5
Inscrit le: 09 Mar 2011, 08:12


Retour vers Windows XP

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 7 invités

  •  Liens commerciaux