Simulation clavier/souris [Résolu]

Ordinastie 93 Messages postés samedi 29 janvier 2005Date d'inscription 17 octobre 2008 Dernière intervention - 7 oct. 2005 à 15:16 - Dernière réponse : Ordinastie 93 Messages postés samedi 29 janvier 2005Date d'inscription 17 octobre 2008 Dernière intervention
- 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
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 8 oct. 2005 à 06:39
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;

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de Lutinore
Meilleure réponse
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 8 oct. 2005 à 17:17
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.

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de Lutinore
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 7 oct. 2005 à 15:27
0
Merci
utilise plutot la classe SendKey

Sébastien FERRAND
Commenter la réponse de sebmafate
Ordinastie 93 Messages postés samedi 29 janvier 2005Date d'inscription 17 octobre 2008 Dernière intervention - 7 oct. 2005 à 15:41
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
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 7 oct. 2005 à 15:44
0
Merci
de rien ;)

Sébastien FERRAND
Commenter la réponse de sebmafate
Ordinastie 93 Messages postés samedi 29 janvier 2005Date d'inscription 17 octobre 2008 Dernière intervention - 8 oct. 2005 à 16:09
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
Ordinastie 93 Messages postés samedi 29 janvier 2005Date d'inscription 17 octobre 2008 Dernière intervention - 8 oct. 2005 à 18:52
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.