Melhor maneira de lidar com o processamento global de teclas de atalho em c #?

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.