Je dois saisir des keystokes à partir d'un périphérique en coin et empêcher les commandes ou le formulaire de les recevoir. J'ai aussi besoin d'être capable de connaître la valeur (char). J'ai essayé de remplacer les événements ProcessCmdKey (Keys) et ProcessDialogChar (char). Dans l'événement ProcessCmd, je peux supprimer la séquence de touches si j'en ai une, mais le caractère n'est pas un paramètre de l'événement. Dans l'événement ProcessDialogChar, le caractère est présent, mais je ne peux pas empêcher le formulaire ou le contrôle avec le focus de recevoir la clé. Suggestions?Saisir les touches du clavier
1
A
Répondre
1
Ce n'était pas comme cela que je voulais le faire, mais parce que j'avais besoin de le réparer et de passer à autre chose, j'ai mis un textbox caché sur le formulaire et dès que je vois le début de la chaîne de données Je veux capturer j'ai mis l'accent sur cette zone de texte et répondre à l'événement TextChanged. Si je n'ai pas vu le caractère de fin avant l'expiration de la temporisation, j'efface la zone de texte et recommence. Kludge, mais cela fonctionne et m'a amené à la tâche suivante.
5
Vous voulez ajouter cette pendant le chargement du formulaire:
Application.AddMessageFilter(this);
Ajouter cette constante:
private const int WM_KEYDOWN = 0x100;
Et cette méthode:
public bool PreFilterMessage(ref Message m)
{
Keys keyCode = (Keys)(int)m.WParam & Keys.KeyCode;
bool retVal = false;
if (m.Msg == WM_KEYDOWN)
{
// Handle the keypress
retVal = true;
}
return retVal;
}
En retournant true, votre formulaire et le (s) contrôle (s) ne verront jamais la touche.
Questions connexes
- 1. Comment identifier les touches du clavier en utilisant C#
- 2. Les flèches obtenant les touches fléchées
- 3. Evénements clavier pour les touches de modification dans Safari 2.0
- 4. La détection et d'agir sur les touches de direction du clavier en Java
- 5. Comment saisir une entrée au clavier dans AutoIt?
- 6. Combiner la combinaison du clavier
- 7. utilisation de touches, problème de rappel de clavier
- 8. Mappage des touches du terminal distant Unix
- 9. Produire un clavier Evénements touches de la touche
- 10. Existe-t-il un moyen d'appuyer sur les touches du clavier ou de les incruster dans le clavier en utilisant le code C#?
- 11. AS3: Détecter les touches longues
- 12. Comment tester les événements du clavier jQuery?
- 13. Saisir les mots-clés du moteur de recherche dans php
- 14. Comment saisir les tags correctement?
- 15. Saisir tous les 4 fichiers
- 16. Comment puis-je éliminer les touches mortes sur Mac OS X avec un clavier international?
- 17. puis-je réorganiser les touches d'un clavier das de QWERTY à Dvorak?
- 18. Hiding du clavier
- 19. Qt - Disposition du clavier
- 20. Affichage de l'infobulle du contrôle WPF sous les touches décisives
- 21. Naviguer avec les touches fléchées
- 22. Programme Windows pour signaler les pressions de touches
- 23. clés de détection de direction du clavier en utilisant keyPressed
- 24. Comment tester les touches Ctrl?
- 25. Utilisez les touches fléchées C++?
- 26. Comment obtenir les valeurs de touche de pression du clavier dans une application VB.NET 2005?
- 27. Saisir des informations entre les tags
- 28. Delphi: Comment arrêter automatiquement les touches de raccourci TAction?
- 29. Test du 'Ctrl' du clavier en C#
- 30. Personnalisation du clavier de l'iPhone
Couple de notes pour les choses que je n'ai pas précisé: Vous devez implémenter IMessageFilter, qui a une méthode, PreFilterMessage. Vous n'avez pas besoin de l'implémenter sur votre formulaire, vous pouvez créer un objet complètement séparé si vous voulez implémenter cette interface. Bien que je ne sois pas sûr, vous devriez pouvoir appeler AddMessageFilter avant que votre formulaire soit créé, puisque le filtre de message appartient à la pompe de messages de votre thread graphique. – jasonh
Merci, j'ai fait cela et cela fonctionne, mais je suis toujours dans la même situation que j'étais avec l'écrasement ProcessCmdKey. Je n'ai pas le caractère réel entré. Par exemple sur mon clavier le caractère '^' est keyCode D6. Je suppose que la touche Maj peut être supprimée de l'un des paramètres. J'essaie d'éviter de traduire moi-même les personnages. – jac