[c++] piloter application [Résolu]

Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
- - Dernière réponse : nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
- 26 juin 2014 à 10:46
Bonjour à tous,

J'ai un soucis avec le pilotage d'application : les touches correspondants aux caractères de texte (a,b,etc , espace) ne sont pas envoyé à l'application que je souhaite piloter. Par exemple, si je veux piloter notepad et envoyer "F1" pour afficher l'aide, ca fonctionne sans soucis :

HWND hMPlayer = FindWindow("Notepad", NULL);
SetForegroundWindow(hMPlayer);
Sleep(100);
PostMessage(hMPlayer, WM_KEYDOWN, VK_F1, 0);
Sleep(1000);
PostMessage(hMPlayer, WM_KEYUP, VK_F1, 0);

=> l'aide s'affiche

par contre si je souhaite ecrire du texte (et donc en remplacant "VK_F1" par "'f'" ou "VK_SPACE" , rien ne se passe.

Quelqu'un aurait il une piste ?

merci d'avance.
naga
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
8 mars 2017
6
1
Merci
Bonjour,
As-tu essayé d'envoyer un WM_CHAR. Sinon tu trouveras peut-être des idée de solution dans cet article:
http://www.codeproject.com/Articles/6819/SendKeys-in-C
Bon codage

Dire « Merci » 1

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

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

Commenter la réponse de cs_louis14
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
22
0
Merci
j'ai trouvé :


HWND hanApps= FindWindow("LinkOneWClass", NULL);
SetForegroundWindow(hanApps);
Sleep(100);
keybd_event('F',0,KEYEVENTF_EXTENDEDKEY | 0,0 );
Sleep(100);
keybd_event('F',0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);




à noter qu'il faut passer la lettre en majuscule pour prendre le bon code hexa de f. (0x46 .... sa semble correspondre à la table ascii sur le coup ne vous y trompez pas, ce n'est pas exactement ca).


pour info : pour faire le f majuscule , il faut envoyer l'ordre maj+f.

naga
Commenter la réponse de nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
22
0
Merci
note : j'ai "laché" le postMessage car je trouve qu'il est plus restreint vis à vis de ce qu'on envoi.
Concernant le sendMessage, même remarque.
Commenter la réponse de nagaD.scar

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.