Fenetre active

galax98 Messages postés 49 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 29 juin 2020 - 19 nov. 2009 à 15:41
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 20 nov. 2009 à 12:11
Bonjour
Ma question est surement tres basique mais je ne m'en sort pas ...
Je souhaite faire un petit programme qui me previent lorsqu'une certaine fenetre (appelons la FEN, qui est une application exterieure à mon programme) devient active.
Je sais récupérer le handle de la fenetre active et je peux donc vérifier s'il s'agit bien de FEN, mais comment faire cela de façon "permanente" sans que ça bloque tout. Faut il passer par un thread ou bien puis je intégrer ce test dans la procedure callback de mon programme ?
En esperant avoir été clair.
Merci

8 réponses

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
19 nov. 2009 à 17:22
Salut,

bah euh, j'ai peut-etre mal compris, mais GetWindowText devrait etre la solution.
Tout dépend ce que représente ton FEN (est ce le titre de la fenetre ?)
0
galax98 Messages postés 49 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 29 juin 2020
19 nov. 2009 à 17:43
Merci mais on s'est mal compris. FEN est une application (qui tourne en tache de fond par exemple, et dont je connais déja le handle, le titre la classe etc ...) qui de temps en temps devient la fenetre active, me demandant alors de lui donner des informations. Comme je ne veux pas rester devant le pc à attendre, je voudrais créer un programme qui fait "DING DONG" pour me prévenir dès que FEN devient fenetre active. Ma question est donc comment vérifier de façon continue que FEN est active ou pas.
Est ce plus clair ?
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
19 nov. 2009 à 21:21
Un truc n'est pas clair : est-ce-que la fenêtre que tu surveilles est déjà lancée ou pas?
Dans le premier cas, tu peux placer un hook sur la fenêtre et intercepter le message WM_ACTIVATE par exemple : cf SetWindowsHookEx()
Dans le deuxième, effectivement tester comme tu l'as fait; simplement, mettre en place un timer pour seulement tester de temps en temps, avec comme callback ta procédure de test; cf SetTimer()
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
20 nov. 2009 à 08:47
Là c'est plus clair.

Je rejoins juju12 sur le hook.
Si tu veux des exemples, cherche dans les codes sur ce forum, BruNews a fait de bons exemples.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
galax98 Messages postés 49 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 29 juin 2020
20 nov. 2009 à 10:24
Merci. Oui la fenetre que je surveille est deja lancée, je vais regarder le hook.
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
20 nov. 2009 à 10:43
Je pense à un truc !

ESt ce que GetForegroundWindow() pourrait répondre à tes besoins. Il faudrait tester, ca ne retourne peut-etre pas systématiquement la fenetre active.
Il te suffirait de faire un thread et faire du polling avec cette fonction.
0
galax98 Messages postés 49 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 29 juin 2020
20 nov. 2009 à 12:00
Il y a aussi GetActiveWindow je crois.
En fait c'est un peu plus compliqué car je dois surveiller plusieurs fenetres en meme temps. Lorsqu'une fenetre1 veut que je lui réponde, elle devient active, mais elle est 'desactivée' par une fenetre2 nécessitant elle aussi que je réponde, la fenetre1 devient alors 'clignotante'. Je souhaite que mon programme repère toutes ces fenetres 'clignotantes' (et donc en attente de réponse). Le mieux n'est il pas de faire un thread qui passe toutes les fenetres en revue et qui vérifie si elles clignotent (comment repere t-on d'ailleurs qu'une fenetre clignote ?)
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
20 nov. 2009 à 12:11
pour GetActiveWindow ca parle de Thread, a mon avis ca ne marche que pour le process courant.
0
Rejoignez-nous