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
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);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).
Ai-je oublier quelque chose ?
Partager