Simulation clavier/souris [Résolu]

Messages postés
93
Date d'inscription
samedi 29 janvier 2005
Statut
Membre
Dernière intervention
17 octobre 2008
- - Dernière réponse : Ordinastie
Messages postés
93
Date d'inscription
samedi 29 janvier 2005
Statut
Membre
Dernière intervention
17 octobre 2008
- 8 oct. 2005 à 18:52
Bonjour.

Voial, mon but est de simuler l'appui d'une touche ou d'un séquence de touches du clavier.
M'étant penché du coté de l'API win, j'ai réussi à faire quelque chose qui y ressemble (PostMessage). Seulement, ce que je souhaiterai faire est plus compliqué: j'aimerai envoyer le message non pas a un instance d'application mais au systeme de facon plus générale. De facon à ce que le message soit retransmis a l'appli qui a le focus. Je sais pas si c'est réellement faisable en C#, s'il existe quelque chose du coté de l'API win, ou autre, c'est pour ca que j'aimerai un peu d'aiguillage =)

Merci d'avance.
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
3
Merci
Salut, si il s'agit de simuler l'appuie sur une touche au niveau du sytème tu peux utiliser la fonction keybd_event.


[
DllImport(
"user32.dll", EntryPoint =
"keybd_event" ) ]

private
static
extern
void KeyboardEvent(
byte vk,
byte scan,
uint flags,
UIntPtr extra );

private
const
int KEYEVENTF_EXTENDEDKEY = 0x1;

private
const
int KEYEVENTF_KEYUP = 0x2;

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 204 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
3
Merci
Si c'est un jeu, y'a de grandes chances que le clavier soit géré avec DirectInput, le principe de DirectInput c'est de communiquer directement avec le driver du périphérique mais en général on n'utilise pas DirectInput pour entrer du texte car c'est plutôt fastidieux, et vu que le 2éme {ENTER} fonctionne, je pense à un contrôle, et si ça ne marche pas c'est peut être parce que le contrôle n'a pas le focus.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 204 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
0
Merci
utilise plutot la classe SendKey

Sébastien FERRAND
Commenter la réponse de sebmafate
Messages postés
93
Date d'inscription
samedi 29 janvier 2005
Statut
Membre
Dernière intervention
17 octobre 2008
2
0
Merci
Merci pour la réponse rapide. J'ai eu du mal a trouvé la classe parce que c'est SendKeyS et que les recherches dans MSDN ne font pas le lien.
Je peux pas tester maintenant mais je le ferai ce soir.
Merci =)

Ordinastie.
Commenter la réponse de Ordinastie
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
0
Merci
de rien ;)

Sébastien FERRAND
Commenter la réponse de sebmafate
Messages postés
93
Date d'inscription
samedi 29 janvier 2005
Statut
Membre
Dernière intervention
17 octobre 2008
2
0
Merci
Merci pour vos réponses. Ca marche pas tout a fait, mais presque =)
Ce que j'essaye de faire, c'est de quitter un jeu automatiquement, en envoyant grosso-modo:
{ENTER}
/quit
{ENTER}

Les deux propositions font la même chose, si j'appuie moi meme sur la touche ENTER, l'input est bien passé, et "/quit" s'affiche bien et le deuxieme enter passe bien.
Le problème, c'est que c'est le premier qui passe pas. Comme c'est vraiment "dans" le jeu, la gestion de l'input du clavier doit pas etre la meme (directInput?) qu'au moment de taper la commande et ca marche pas :/

Je vais essayer de voir si du coté de SendInput ca marche mieux, mais j'y crois pas trop... faut que j'arrive a refaire la structure et c'est pas gagné.

L'ideal, je crois que ca serait de pouvoir simuler quasiement au niveau hardware, mais je sais pas si c'est faisable.
En tout cas, si vous avez d'autres idées, je suis preneur ;)

Ordinastie.
Commenter la réponse de Ordinastie
Messages postés
93
Date d'inscription
samedi 29 janvier 2005
Statut
Membre
Dernière intervention
17 octobre 2008
2
0
Merci
J'ai continué de faire quelque teste, et bizarrement, je peux utiliser la souris. Je trouve ca etonnant qu'elle soit pas utilisée avec DirectInput aussi.

Sinon, il y aurait un moyen de déclencher l'evenement au niveau du driver? Pour que le jeu ait l'impression de l'appui sur la touche?

Si c'est pas trop compliqué, ca m'interesserait, sinon, tant pis, je me debrouillerai avec la souris =)

Merci encore pour le réponses
Ordinastie.
Commenter la réponse de Ordinastie