[C++] Clavier virtuel - simulation caractères spéciaux

Clavier virtuel - simulation caractères spéciaux [C++] - C++ - Programmation

Marsh Posté le 13-05-2007 à 12:59:11    

Bonjour,
 
Je suis en train de réaliser un clavier virtuel. Il marche parfaitement avec les touches "classiques" AZERTY grâce à la fonction keybd_event() , mais j'aimerais maintenant créer des touches "caractères spéciaux" comme '¿' (ALT+168) ou 'ß' (ALT+225).
 
Donc je voulais simuler une combinaison de touches = {ALT + 2 + 2 + 5 + /ALT}. Malheureusement je n'y arrive pas ! Ce qui est bizar c'est que j'arrive à simuler {ALT + TAB + /TAB + /ALT} grâce à la fonction SendInput() mais pas ALT + combinaison de chiffres...
 
Est-ce que quelqu'un a une idée ?
Merci beaucoup
 
Je joins les codes que j'ai essayé... si quelqu'un voit ce qui cloche

Code :
  1. #include <windows.h>
  2. #include <WinAble.h>
  3. int main(int argc, char * argv[]) {
  4. // Mise d'Open Office au premier plan
  5. HWND hMPlayer = FindWindow("SALFRAME",NULL);
  6. SetForegroundWindow(hMPlayer);
  7. Sleep(100);
  8. // simulation 'ß' Première version
  9. keybd_event( VK_MENU, 0, KEYEVENTF_EXTENDEDKEY, 0); // Appuis ALT
  10. keybd_event( 98, 0, 0, 0); // Appuis '2'
  11. keybd_event( 98, 0, KEYEVENTF_KEYUP, 0); // Relachement '2'
  12. keybd_event( 98, 0, 0, 0); // Appuis '2'
  13. keybd_event( 98, 0, KEYEVENTF_KEYUP, 0); // Relachement '2'
  14. keybd_event( 101, 0, 0, 0); // Appuis '5'
  15. keybd_event( 101, 0, KEYEVENTF_KEYUP, 0); // Relachement '5'
  16. keybd_event( VK_MENU, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); // Relachement ALT
  17. // simulation 'ß' Deuxième version
  18. INPUT input[8];
  19. input[0].type = input[7].type = INPUT_KEYBOARD;
  20. input[0].ki.wVk = input[7].ki.wVk = VK_MENU; // 0 - Appui ALT
  21. input[7].ki.dwFlags = KEYEVENTF_KEYUP; // 7 - Relachement ALT
  22. input[1].type = input[2].type = INPUT_KEYBOARD;
  23. input[1].ki.wVk = input[2].ki.wVk = 98; // 1 - Appui '2'
  24. input[2].ki.dwFlags = KEYEVENTF_KEYUP; // 2 - Relachement '2'
  25. input[3].type = input[4].type = INPUT_KEYBOARD;
  26. input[3].ki.wVk = input[4].ki.wVk = 98; // 3 - Appui '2'
  27. input[4].ki.dwFlags = KEYEVENTF_KEYUP; // 4 - Relachement '2'
  28. input[5].type = input[6].type = INPUT_KEYBOARD;
  29. input[5].ki.wVk = input[6].ki.wVk = 101; // 5 - Appui '5'
  30. input[6].ki.dwFlags = KEYEVENTF_KEYUP; // 6 - Relachement '5'
  31. ::SendInput(8, input, sizeof(INPUT));
  32. return 0;
  33. }


---------------
Thoams ;-)
Reply

Marsh Posté le 13-05-2007 à 12:59:11   

Reply

Marsh Posté le 15-05-2007 à 16:50:16    

Salut.  
Pour la récupération de caractères spéciaux il n'y rien à spécifier au niveau du numlock?  
je me trompe peut être a voir je suis pas expert en la matière.
http://msdn2.microsoft.com/en-us/library/ms645540.aspx
http://msdn2.microsoft.com/en-us/library/ms646304.aspx


Message édité par yolas22 le 15-05-2007 à 16:52:16
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed