Comment puis-je détecter la pression de touche alors qu'elle n'est pas centrée?
Je suis en train d'essayer de détecter le Print Screen
appuyez sur le bouton alors que la forme n'est pas l'application active.
Comment le faire, si possible?
Regarde comme il pourrait l'aider: social.msdn.microsoft.com/Forums/en-US/...
OriginalL'auteur James Holland | 2013-08-17
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez, il est appelé "Système de crochets", jetez un oeil à Le Système mondial de Crochets .NET.
OriginalL'auteur Arash
Bien, si vous avez eu des problèmes avec le Système de crochets, voici la solution prête (basé sur http://www.dreamincode.net/forums/topic/180436-global-hotkeys/):
Définir statique de la classe dans votre projet:
À la notion de classe dans votre projet:
ajouter de l'usage:
maintenant, dans votre Formulaire, ajouter un champ:
et dans le constructeur du Formulaire:
Ajouter ces 2 méthodes à votre formulaire:
HandleHotkey est votre appuyez sur le bouton de gestionnaire. Vous pouvez changer le bouton en passant paramètre différent ici:
ghk = new KeyHandler(Keys.PrintScreen, this);
Maintenant votre programme réagit pour le bouton d'entrée, même si elle n'est pas centrée.
Cela pourrait-il être adapté pour gérer les combinaisons de touches? Comme CTRL-N
OriginalL'auteur Przemysław Kalita
L'API
GetAsyncKeyState()
peut être une très bonne alternative à la configuration de Windows Crochet.Cela dépend de comment vous le désir de recevoir de l'entrée. Si vous préférez event-driven notifications, puis un crochet est le chemin à parcourir; toutefois, si vous préférez interrogation du clavier pour les modifications de l'état, vous pouvez utiliser l'API ci-dessus.
Ici est une simple démonstration de l'utilisation d'
GetAsyncKeyState
:Dérivé de Pinvoke.NET
if (prntScrnIs-->p<--ressed)
êtreif (prntScrnIs-->P<--ressed)
?OriginalL'auteur Nick Miller