[c++] piloter application

Résolu
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 25 juin 2014 à 10:23
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 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

3 réponses

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
26 juin 2014 à 08:24
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
1
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
Modifié par nagashima le 26/06/2014 à 10:45
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
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
26 juin 2014 à 10:46
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.
0
Rejoignez-nous