En tant qu'amateur à tout ce qui est inférieur à VB/VBS (C++ WINAPI est un cauchemar pour quelqu'un de mon expérience) Je n'ai aucune idée de comment construire le long lParam pour un simple message KEYDOWN en C++ et ont probablement passé plus de temps à chercher une explication décente que vaut la peine, quelqu'un serait capable de décrire exactement comment s'y prendre?C++ WINAPI: Comment utiliser SendMessage/PostMessage WM_KEYDOWN lparam
Il semble que presque chaque réponse à cette question dans d'autres forums ait été «pourquoi» ou «utiliser SendInput à la place», sans réellement répondre à la question; Je suppose que c'est trop élémentaire pour que les gens puissent l'expliquer. Quoi qu'il en soit, voici la description de msdn, apprécierions beaucoup une explication décente ou un lien vers un, et un exemple travaillé si possible:
Le nombre de répétitions, le code de balayage, drapeau-clé étendue, le code de contexte, précédent indicateur d'état clé, et indicateur d'état de transition, comme indiqué ...
0-15 Nombre de répétitions pour le message actuel. La valeur correspond au nombre de fois que la touche est répétée automatiquement en tant que si l'utilisateur maintient la touche enfoncée. Si la séquence de touches est suffisamment longue, plusieurs messages sont envoyés. Cependant, le nombre de répétitions n'est pas cumulatif. 16-23 Le code de balayage. La valeur dépend de l'OEM.
24 Indique si la clé est une clé étendue , comme les touches droite ALT et CTRL qui apparaissent sur un amélioré 101- ou un clavier 102 touches. La valeur est 1 si c'est une clé étendue; sinon, il est 0. 25-28 Réservé; faire ne pas utiliser
29 Le code de contexte. La valeur est 1 si la touche ALT est enfoncée tandis que la touche est enfoncée; il est 0 si le message WM_SYSKEYDOWN est publié dans la fenêtre active car aucune fenêtre n'a le focus du clavier.
30 L'état de la clé précédente. La valeur est 1 si la touche est enfoncée avant que le message soit envoyé, ou 0 si la clé est pleine.
31 L'état de transition. La valeur est toujours 0 pour un message WM_SYSKEYDOWN.
Utilisez plutôt SendInput. Vraiment. Posez une question à ce sujet si vous ne le croyez pas. –
Essentiellement intéressé par SendMessage pour gérer les dialogues dans l'automatisation des interfaces GUI pour des tâches répétitives (par exemple ajouter/mettre à jour des enregistrements dans une base de données contrôlée par un CMS qui ne permet pas un accès direct à la base de données SQL); Idéalement, cela pourrait se faire sans risque de perte de concentration, de sorte que l'ordinateur entier ne serait pas occupé. N'ayant pas un fort contexte de codage, il semble que ce soit la façon la plus simple/la plus sûre de gérer les éléments de type input = "file" plutôt que d'adresser un formulaire directement –