galax98
Messages postés49Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention29 juin 2020
-
19 nov. 2009 à 15:41
fregolo52
Messages postés1114Date d'inscriptionmercredi 15 juin 2011StatutMembreDerniè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
fregolo52
Messages postés1114Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention 6 mai 20214 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 ?)
galax98
Messages postés49Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention29 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 ?
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 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()
fregolo52
Messages postés1114Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention 6 mai 20214 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.
galax98
Messages postés49Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention29 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 ?)