Duplicar Possível:
Como posso registrar uma tecla de atalho global para dizer CTRL + SHIFT + (LETTER) usando o WPF e o .NET 3.5?
Eu gostaria de ter várias hotkeys globais no meu novo aplicativo (para controlar o aplicativo de qualquer lugar no Windows), e todas as fonts / soluções fornecidas que encontrei na Web parecem fornecer uma espécie de solução de claudicação (ou soluções somente para um g.hotkey, ou soluções que durante a execução criam atrasos de mouse irritantes na canvas).
Alguém aqui sabe de um recurso que pode me ajudar a conseguir isso, com o qual eu possa aprender? Qualquer coisa?
Obrigado ! 🙂
A melhor solução que encontrei é http://bloggablea.wordpress.com/2007/05/01/global-hotkeys-with-net/
Hotkey hk = new Hotkey(); hk.KeyCode = Keys.1; hk.Windows = true; hk.Pressed += delegate { Console.WriteLine("Windows+1 pressed!"); }; hk.Register(myForm);
Note como você pode definir diferentes lambdas para diferentes teclas de atalho
http://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx
Se você não estiver usando o .net 3.5.
Eu iria lidar com isso usando P / Invoke para chamar RegisterHotKey () para cada tecla de atalho e, em seguida, use NativeForm (supondo que você está usando WinForms) para ser notificado da mensagem WM_HOTKEY. Isso deve manter a maior parte do seu código de atalho em um só lugar.