it-swarm-es.com

¿La mejor manera de abordar el procesamiento global de teclas de acceso rápido en C #?

Posible duplicado:
¿Cómo puedo registrar una tecla de acceso rápido global para decir CTRL + MAYÚS + (LETRA) usando WPF y .NET 3.5?

Me gustaría tener varias teclas rápidas globales en mi nueva aplicación (para controlar la aplicación desde cualquier lugar de Windows), y todas las fuentes/soluciones dadas que encontré en la web parecen proporcionar una especie de solución cojera (cualquiera de las soluciones solo para un g.hotkey o soluciones que, mientras se ejecutan, crean retrasos molestos en la pantalla del mouse).

¿Alguien aquí conoce un recurso que pueda ayudarme a lograr esto, del que pueda aprender? ¿Cualquier cosa?

Gracias ! :)

24
jeevan

La mejor solución que he encontrado es 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); 

Tenga en cuenta cómo puede configurar diferentes lambdas para diferentes teclas de acceso rápido

40
Ohad Schneider
7
arul

Manejaría esto usando P/Invoke para llamar a RegisterHotKey () para cada tecla de acceso rápido, y luego usar NativeForm (suponiendo que esté usando WinForms) para recibir una notificación del mensaje WM_HOTKEY. Esto debería mantener la mayoría de su código de teclas de acceso rápido en un solo lugar.

5
Andy