Bonjour,
J'ai une application qui simule des evenements claviers dans un autre application.
Si je veux simuler l'appui de la touche 'r' dans une application cible mon code est le suivant :
Ce morceau de code marche et si mon application cible est Notepad, je vois bien un 'r' s'afficher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ::PostMessage(target->m_hWnd, WM_KEYDOWN, 0x00000052, 0x00130001); ::PostMessage(target->m_hWnd, WM_CHAR, 0x00000072, 0x00130001); ::PostMessage(target->m_hWnd, WM_KEYUP, 0x00000052, 0xC0130001);
J'ai ecrit ce code en utilisant Spy++ pour voir les messages envoyes.
Mon probleme est maintenant de simuler l'appui sur CTRL+HOME, pour pouvoir' toujours dans Notepad, revenir au debut du fichier.
Avec Spy++ les messages recus par Notepad lorsque j'appuie reellement sur CTRL+HOME sont les suivants :
J'ai donc ecrit le code suivant qui reproduit (toujours d'apres Spy++) exactement les meme messages :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <00895> 001C01B4 P WM_KEYDOWN nVirtKey:VK_CONTROL cRepeat:1 ScanCode:1D fExtended:0 fAltDown:0 fRepeat:0 fUp:0 <00894> 001C01B4 P WM_KEYDOWN nVirtKey:VK_HOME cRepeat:1 ScanCode:47 fExtended:1 fAltDown:0 fRepeat:0 fUp:0 <00895> 001C01B4 P WM_KEYUP nVirtKey:VK_HOME cRepeat:1 ScanCode:47 fExtended:1 fAltDown:0 fRepeat:1 fUp:1 <00896> 001C01B4 P WM_KEYUP nVirtKey:VK_CONTROL cRepeat:1 ScanCode:1D fExtended:0 fAltDown:0 fRepeat:1 fUp:1
Malheureusement le resultat n'est pas le meme En fait dans Notepad, le resultat observe est le meme que si j'appuyais seulement sur la touche HOME (retour en debut de ligne et non en debut de fichier).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ::PostMessage(target->m_hWnd, WM_KEYDOWN, 0x00000011, 0x001D0001); // VK_CONTROL ::PostMessage(target->m_hWnd, WM_KEYDOWN, 0x00000024, 0x01470001); // VK_HOME ::PostMessage(target->m_hWnd, WM_KEYUP, 0x00000024, 0xC1470001); ::PostMessage(target->m_hWnd, WM_KEYUP, 0x00000011, 0xC01D0001);
Ai-je oublier quelque chose ?
Partager