Keybd_event

cs_lbn Messages postés 2 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 6 août 2009 - 5 août 2009 à 19:16
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 6 août 2009 à 17:49
Bonjour à tous,

Après de nombreuses recherches infructeuses sur web et sur le forum, après plusieurs essais vains, je vous sollicite pour comprendre.

CE QUE JE CHERCHE A FAIRE:
Je cherche à émuler la pression des touches numériques du clavier principal (pas du numpad) et de la série des F1 à F12 dans un jeux que j'utilise, afin de macroter certaines action répétitives.

CE QUE J'AI TENTé:
-J'ai fais des essais avec sendkeys. Lorsque je suis sous la chatbox, les chiffres apparaissent bien comme un texte envoyé. Lorsque je ne suis pas en chat, le jeux n'interprete pas mes valeur envoyées (et donc la touche 1 sensée opérer quelque chose ne fait rien)

-J'ai essayé avec Keybd_event.
Je commence par déclarer :

Private Declare Sub keybd_event Lib "user32" Alias "keybd_event" ( _
ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)


Sur la procédure clic d'un bouton, je met par exemple :

Call keybd_event (82, 0, 0, 0)
ou
keybd_event 82, 0, 0, 0 (sans les parenthese et sans le CALL, je ne vois d'ailleur pas la difference)

Dans ce cas, la lettre 'r' est bien envoyée à l'application (et je vois un 'r' apparaitre dans la chatbox de mon jeux) mais le 'r' n'est pas interpreté et la fonction sous jacente (sensé faire un reply) ne se lance pas.

Pourtant, lorsque que modifie la fonction avec
keybd_event 82, 2, 0, 0
Je n'obtiens plus de "r", mais la fonction du logiciel lié à la touche '1'

En fait, je ne comprends pas vraiment comment faire fonctionner la simulation de la pression de touche, sans m'occuper de la valeur qu'elle renvoit.

Merci de m'orienter dans la mesure de vos possibilités :)

3 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 août 2009 à 08:35
un click sur un bouton de ta form, sensée interagir avec ton jeu...

en cliquant tu donne le focus a ton bouton ; a ta form, c'est elle qui recoit la pression de la touche.

sans compter que tu ne fais apparemment pas d'appel indiquant le relachement de la touche (KEYEVENTF_KEYUP)

http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx

Renfield - Admin CodeS-SourceS - MVP Visual Basic
cs_lbn Messages postés 2 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 6 août 2009
6 août 2009 à 15:55
Quand je clique c'est bien le formu qui prend le focus.
Directement s'en suit une tempo de 5sec, pendant laquel je focus ma fenetre de jeu.

Avec ou sans relachement, le résultat est le même malheuresement. La valeur de la touche est bien envoyée (^puisque je la receptionne dans la console de chat du jeux) mais elle n'est pas interprétée en tant que pression de touche.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 août 2009 à 17:49
à tenter :

http://www.vbfrance.com/codes/SENDKEYSEX-SIMULER-TOUCHE-DANS-FENETRE-PRECISE_41974.aspx


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Rejoignez-nous