Focus application extérieure [Résolu]

Oniria 297 Messages postés dimanche 14 mars 2004Date d'inscription 18 décembre 2014 Dernière intervention - 4 nov. 2008 à 10:44 - Dernière réponse : Oniria 297 Messages postés dimanche 14 mars 2004Date d'inscription 18 décembre 2014 Dernière intervention
- 5 nov. 2008 à 15:13
Bonjour,

J'ai développé un petit programme qui détecte des mouvement avec ma webcam.
Dès qu'il y a un mouvement, je déclenche une simulation d'appui sur le clavier par la fonction keybd_event.

Sauf que cette action est liè à l'application qui est active (celle qui à le focus).

J'arrive à récupérer la liste des applications qui sont lancé mais je ne trouve pas d'info pour activer l'application qui m'intéresse.

Comment peut-on donner le focus à l'application de son choix ? Comment connaitre l'application qui a le focus ?
Ainsi, si un mouvement est détecté, je pourrais activer l'application de mon choix puis simuler une touche pour que cette application sache qu'un événement est arrivé.

Merci à tous

Oniria
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Oniria 297 Messages postés dimanche 14 mars 2004Date d'inscription 18 décembre 2014 Dernière intervention - 5 nov. 2008 à 15:13
1
Merci
Bonjour,

J'ai trouvé après de très longues heures d'essai infructueux...

Pour ceux que ca interresse, il faut utiliser l'API de window.

On cherche le Handle de la fenêtre de l'application qui nous interresse et on execute

PostMessage(FMain.Handle_Canoe,WM_KEYDOWN,touches[i],FMain.Handle_Canoe);

avec dans mon cas : FMain.Handle_Canoe qui est le Handle de la fenêtre de l'application

WM_KEYDOWN qui est l'appui d'une touche

touches[i] correspond au code de la touche (par exemple VK_0 pour la touche 0)

et ce que je ne savais pas qu'il fallait mettre dans ce qui est appelé lParam, le Handle de la fenêtre de l'application. Ce n'ai pas documenté, j'ai trouvé en créant un espion de message windows.

Ensuite, au bout d'un petit moment, il faut envoyer la commande de relachement :

PostMessage(FMain.Handle_Canoe,WM_KEYUP,touches[i],FMain.Handle_Canoe);

Si ca peut aider d'autres personnes, surtout dans le pilotage d'une application par le clavier ou la souris ...

Oniria

Merci Oniria 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de Oniria

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.