Simulation clavier/souris [Résolu]

Messages postés
93
Date d'inscription
samedi 29 janvier 2005
Dernière intervention
17 octobre 2008
- - Dernière réponse : Ordinastie
Messages postés
93
Date d'inscription
samedi 29 janvier 2005
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 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
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 99 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
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 99 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
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
Dernière intervention
17 octobre 2008
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
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
0
Merci
de rien ;)

Sébastien FERRAND
Commenter la réponse de sebmafate
Messages postés
93
Date d'inscription
samedi 29 janvier 2005
Dernière intervention
17 octobre 2008
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
Dernière intervention
17 octobre 2008
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

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.