Simuler une entrée au clavier

HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 - 12 août 2003 à 14:34
 Steph115 - 17 juil. 2004 à 09:43
Salut,
est-il possible (et si oui comment) de faire croire à un programme que quelqu'un tape sur une touche? Un exemple pour fixé les idées : un programme en C lance une application qui attend l'appui sur la touche entée. Je souhaiterai que le programme ayant lancé l'application le face ou du moins lui face croire qu'un utilisateur à appuyer sur entrée....
Merci

26 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 14:41
Salut,
si ton prog est en win32 oui.
Il faut envoyer un message WM_KEYDOWN ou autre du meme genre.
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
12 août 2003 à 14:56
Merci pour la réponse mais un petit exemple serai le bien venue.
Merci d'avance et a+
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 15:08
Salut,
Soit hWnd le handle de la fenetre ou tu souhaite "faire croire" que l'utilisateur a apuyé sur entrer:
Tu envois un message WM_KEYDOWN a cette fenetre:
SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
12 août 2003 à 16:10
Une petite mesentente! Tu me parle de Handle de la fenetre à qui je veux faire croire que je tape sur une touche... moi je voudrais savoir comment faire si l'application que je lance (par system() ou exec()) n'est pas de moi mais style Word ou Excel (un exemple parmis d'autres)

Merci d'avance et a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 16:29
Salut,
>>est-il possible (et si oui comment) de faire croire à un programme que quelqu'un tape sur une touche?
>>Tu me parle de Handle de la fenetre à qui je veux faire croire que je tape sur une touche...

Tu as changé d'avis ? Tu as plus envie de simuler la pression de la touche entrer ?
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
12 août 2003 à 16:36
Non je n'ai pas changer d'avis. Je reprend : je souhaite lancer une application (un exe dont je ne suis pas l'auteur mais Microsoft) et je souhaiterai à partir du programme que j'ai écrit et qui lance l'appli, lui faire croire qu'un utilisateur à taper sur une touche (la touche enter par exemple).
a+
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 16:53
Et bien il te suffit de trouver le HWND de la fenetre du programe que tu viens de lancer, et d'y envoyer un message.
je pense que ca pourrait marcher.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 août 2003 à 17:17
Moi je pense que ca ne peut pas marcher car WM_KEYDOWN est un message que l'application recoit quand une touche est enfoncée mais on ne peut pas envoyer ce message a une application. Moi aussi je cherche a résoudre ce pb depuis longtemps et j'arrive pas trouver
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 août 2003 à 17:20
Dans MSDN, la distinction est bien faite entre ces 2 types de messages:

Message qu'on envoie:
An application sends a WM_SETFONT message to specify the font that a control is to use when drawing text.

Message qu'on recoit:
The WM_KEYDOWN message is posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT key is not pressed.
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 17:24
Salut,
si tu fais SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
c'est comme si tu avais apuyé sur ENTRER lorsque la fenetre hWnd avait le focus.
Les messages sont la pour etres recus... ou envoyés.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 août 2003 à 18:05
Et tu as essayé de voir si ca marchait?
Moi j'ai essayé vite fiat et j'ai l'impression que ce marche pas, on peut pas envoyer n'importe quel message, si?
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 18:14
ben ecoute c'est un truc fondamental du win32 donc non j'ai pas testé. Mais si tu veux je te fais vite fait un prog de test :).
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 août 2003 à 18:16
en fait il y a bien 2 types de messages et ceux comme WM_KEYDOWN ne sont pas envoyés avec SendMessage mais avec PostMessage:

PostMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);

la ca marche très bien!
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 18:22
Dans les 2 cas (SendMessage et PostMessage) le message est envoyé a la fenetre donc ca marche aussi bien avec l'un qu'avec l'autre.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 août 2003 à 18:28
Bizarre, chez moi SendMessage ne marche pas, c'est clair
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 18:34
La seule difference entre ces 2 fonction c'est que PostMessage retourne tout de suite alors que SendMessage attend que le message soit traité avant de retourner.

C'est une mauvaise habitude de ma part d'utiliser SendMessage alors que PostMessage suffit... :)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 août 2003 à 18:39
peut etre mais ca n'explique pas pourquoi ca ne marche pas chez moi
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 août 2003 à 18:42
Comment tu l'a testé ?
Si le traitement du message est long, SendMessage ne retourne pas et donc tu a l'impression que ca ne marche pas.

Moi pour tester j'ai fait une dialogbox qui affiche une messagebox lorsque elle recois un WM_KEYDOWN.
J'ai mis un bouton qui envoie un message WM_KEYDOWN pour simuler l'apuis sur la touche entrée... et ca marche tres bien.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 août 2003 à 18:46
Ouais j'ai du mal m'y prendre. De toute facon g trouvé la fonction keybd_event qui elle marche sans problèmes.
Merci quand meme pour ton aide!
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
13 août 2003 à 08:25
Coucou, j'ai suivit un peu se que vous racontiez et je me demande juste un petit truc. Aussi bien avec PostMessage qu'avec SendMessage, d'ou vous chopper le hWnd de l'appli qui vient d'être lancer??
a+
0
Rejoignez-nous