1

Je suis en train de travailler sur l'amélioration d'un programme pour ce fait j'ai créé une DLL et j'appelle à un instant donné une focntion qui doit envoyer des touches au programme principal..

J'envois donc des messages windows de ce type:
SendMessages(handle,WM_KEYDOWN,VK_A,0);
SendMessages(handle,WM_KEYUP,VK_A,0);

par exemple pour simuler l'appui de la touche "A"

maintenant je voulais envoyer SHIFt-A

SendMessages(handle,WM_KEYDOWN,VK_SHIFT,0);
SendMessages(handle,WM_KEYDOWN,VK_A,0);
SendMessages(handle,WM_KEYUP,VK_A,0);
SendMessages(handle,WM_KEYUP,VK_SHIFT,0);

et là problème la touche SHIFT n'est jamais envoyée
dans le jeu la touche A est associée à une fonction 1
et SHIFT-A à une autre fonction

or dans tous les cas la fonction 1 est toujours jouée..

je ne peux utiliser sendinput ou keybd_event je dois impérativement travaillé en message
je n'ai rien vu dans le MSDN qui m'interdisait de faire cela..est-ce un bug ou une limitation??
si quelqu'un a une solution pour envoyer la touche SHIFT ou CONTROL...




Frenchy
TSH Team
Développeur F18 jane's - vieux jeux

2

Peut-être qu'il y a des problèmes liés aux mauvaises valeurs du LPARAM que tu envoies...
Je ne sais plus s'il est possible de reproduire le scan code, mais tu peux au moins passer les bits de poids fort à 1 pour WM_KEYUP... (mais je ne sais pas si ça changera vraiment quelque chose ou non...)

Jette un coup d'oeil à MapVirtualKey/MapVirtualKeEx, OemKeyScan (Je viens de lire que le scan code contient des infos sur SHIFT et cie), VkKeyScan...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.