Presse de touches Windows globale
J'ai une simple application WPF et j'ai besoin de saisir de la touche F1 enfoncée dans Windows (Système d'Exploitation), même si ma fenêtre WPF est réduite au minimum, ou il n'est pas activé.
J'ai des problèmes avec la détection de cette. J'ai cherché sur Internet et j'ai trouvé beaucoup de résultats, mais ils ne l'ont pas aidé moi.
Pour la détection de l'appui d'une touche à l'intérieur de l'application, j'ai utilisé ce code simple:
AddHandler(Keyboard.KeyDownEvent, (KeyEventHandler)KeyPressed);
private void KeyPressed(object sender, KeyEventArgs e)
{
if (e.Key == Key.F1)
{
//my code went here
}
}
Mais cela ne fonctionne pas lors de ma fenêtre n'est pas activé.
Donc, ma question est: comment détecter mondiale de la touche?
Je le répète: C'est une application WPF.
source d'informationauteur Ionică Bizău
Vous devez vous connecter pour publier un commentaire.
Pas besoin de
Keyboard Hooking
. Utilisez simplementRegisterHotKey
(Définit un système à l'échelle de touche de raccourci) etUnregisterHotKey
à partir de l'API Windows. Essayez d'utiliser ces en C# à partir de pinvoke.net ou ces tutoriels:Il y a un exemple dans Forums Microsoft.
Vous pouvez utiliser ces modificateurs et Touche Virtuelle Codes:
par exemple la touche F1 est
VK_F1 (0x70)
.Lorsque votre application n'est pas une priorité - messags de la pompe ne sera pas obtenir quoi que ce soit - vous besoin d'utiliser le système de niveau de l'API pour accrocher les clés. (essayez de rechercher l'info sur SetWindowsHookEx)