Bonjour,

Voilà plusieurs jours que j'essaye de provoquer un évenement (clique ou touche enfoncée) sur une application qui utilise directinput.

J'ai donc utilisé pour cela (keybd_event,mouse_event,SendInput) mais cela sans succès sur cette application (sur une autre fenêtre, pas de problème).

J'ai ensuite essayé d'utiliser directement le driver du clavier via un tutorial (je n'ai plus le lien). J'ai réussi à allumer les diodes du clavier, mais je n'ai pas trouvé comment simuler la pression d'une touche (si c'est possible, j'aimerai bien savoir).

Puis, je me suis dirigé vers l'assembleur (c++ & AT&T) pour provoquer des interruptions claviers. Problème, en mode protégé, cela ne semble pas fonctionner (le programme s'arrête brutalement dès qu'une interruption est provoquée ).

Je me suis dirigé alors vers un programme (porttalk) qui permet de dialoguer directement avec la machine en passant par un driver. J'ai donc tenter de programmer une petite application pour simuler la pression d'une touche sur le clavier en utilisant les fonctions de programmation offerte par porttalk.
Avec une application, je peux récupérer les évènements de ces pressions cependant, cela ne provoque aucun changement quelque soit la fenêtre.

J'ai ensuite entendu parler des injections dans les dll (hook) qui permet apparement de faire éxecuter au programme souhaité une fonction programmée par nous même. J'ai le sentiment que cela pourrait me permettre de forcer le programme a accepter des évènements exterieurs mais cette solution est (très) compliquée à mettre en place (d'après les tutorials que j'ai vu) et surtout c'est une sorte de hack.

Je pensai aussi à reprogrammer un driver clavier en créant une fonction dans le driver accessible depuis l'extérieur (par mon programme) qui aurait le même effet que l'appui sur une touche pour le système mais j'ai pas vraiment le courage dans me lancer dans la programmation d'un driver, cela me semble bien compliqué.

Alors voilà, maintenant, je me demande quand même si ce que je souhaite faire est possible ?