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

Messages postés
4265
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
4265
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 

3 réponses

Meilleure réponse
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
7
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 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_louis14
Messages postés
4265
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16
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
4265
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16
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