API donnant les événements souris et clavier d'une fenetre

Résolu
cs_jud83 Messages postés 9 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 19 février 2011 - 9 mars 2005 à 20:52
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 10 mars 2005 à 00:26
Dans une application VB , je souhaite détecter la fenêtre active de Windows (que ce soit ou non une fenetre de mon application) : Pas de probleme.
La où je coince c'est lorsque je cherche à savoir si cette fenetre reçois des événements souris ou clavier : Les fonctions GetMessage et PeekMessage de l'API ne renvoient que les message des fenêtres appartenant à l'application qui lance la fonction.

Quelqu'un peut-il me dire comment faire pour savoir dans mon programme VB lancé en tache de fond par exemple, si la fenetre active de Windows (celle dans laquelle on travaille comme une fenetre Word, Excel, OutLook, IE ...) a reçu un événement de clavier ou de souris ?

D'avance merci.

Jud83

7 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
9 mars 2005 à 21:41
Si tu sais détecter la fenêtre active, il ne te reste plus qu'à utiliser l'api GetAsyncKeyState() pour analyser les frappes de touches.
Pour des exemples, regarde sur le site avec "keylogger".

Loup Gris
3
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
9 mars 2005 à 23:22
C'est la même, avec les constantes vbKeyLButton, vbKeyRButton et vbKeyMButton.

Pour plus de précisions sur l'utilisation de l'api, vois la Function GetKey() dans la source : http://www.vbfrance.com/code.aspx?id=19045

Bien sùr, c'est a adapter pour ton projet.

Loup Gris
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 mars 2005 à 23:49
La surveillance des événements au niveau de tout le système se fait par les hooks, SetWindowsHookEx(), mais seulement avec du code natif donc infaisable en VB. Faut compiler une dll en C avec les fonctions de hook et tu pourras appeler depuis VB.

ciao...
BruNews, MVP VC++
3
cs_jud83 Messages postés 9 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 19 février 2011
9 mars 2005 à 22:54
Merci pour ta réponse.
OK pour les événements claviers.
As-tu l'API pour les événements souris stp ?

Jud83
0

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

Posez votre question
cs_jud83 Messages postés 9 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 19 février 2011
9 mars 2005 à 23:48
Super !
Merci.
Comme on dit, il vaut mieux 1 qui sait que 10 qui cherchent !
J'avais pas eu la curiosité d'aller voir les constantes Virtual-Key Codes car les constantes souris sont en tout début de liste.

Encore merci

Jud83
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
10 mars 2005 à 00:09
Suis OK avec toi BruNews.
Mais j'ai voulu donner une réponse VB à une question VB. Quoique, mea culpa, j'ai oublié de dire que pour cette api GetAsyncKeyState() il fallait utiliser un timer. Je pensais que ça tombait sous le sens.

Loup Gris
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 mars 2005 à 00:26
Je sais que tu savais, c'était juste pour préciser la réponse.
Le prob avec un timer est qu'il devra être très court et on ruine les perfs du système.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous