WM_KEYDOWN : comment l'utiliser?
Je suis en train d'envoyer une frappe d'une touche à une application, par le biais de PostMessage. Je suis trop à l'aide Spy++ pour essayer de comprendre comment faire pour envoyer le message, comme je ne suis pas entièrement comprendre son fonctionnement interne.
Dans cette image, le premier élément(l'élément sélectionné) a été faite avec une réelle touche réalisés par moi-même. L'une avec un rouge elipse autour d'elle(ci-dessous) a été réalisé avec le code suivant:
WinApi.PostMessage(InsideLobbyHandle, WinApi.WM_KEYDOWN, (int)WinApi.VK_UP, 1);
Je suppose qu'il doit avoir quelque chose à voir avec la dernière PostMessage() parameter, mais je ne peux pas comprendre comment il fonctionne vraiment. Je peux voir dans la clé d'origine de l'avc le ScanCode = 48, et dans le mien, c'est 0, et aussi fExtended est de 1 et le mien est de 0. Comment puis-je faire la même apparence?
Dans http://msdn.microsoft.com/en-us/library/ms646280(SV.85).aspx je ne comprends pas le dernier paramètre du travail.
Vous devez vous connecter pour publier un commentaire.
Simuler l'entrée au clavier à l'aide de SendInput, pas PostMessage.
Vous ne pouvez pas simuler l'entrée au clavier avec PostMessage.
Il y a encore quelques mises en garde à l'égard de l'état du clavier/async-état:
Le lParam pour la WM_KEYDOWN Notification est spécifiée en termes de bits du champ:
Un avertissement: n'Importe quelle solution construite autour de PostMessage va être très fragile.
Prendre un coup d'oeil à http://inputsimulator.codeplex.com, elle enveloppe l'
SendInput
méthode mentionnée par KevinDans Spy++ si vous faites un clic droit sur la mise en évidence (connecté message) d'entrée et de regarder ses propriétés, Vous pouvez voir la valeur exacte de la lParam. Vous pouvez ensuite l'utiliser comme votre lParam pour s'assurer que le PostMessage conduit à des effets similaires, comme l'action manuelle n'.