2009-05-05 8 views

Respuesta

7

La publicación de Paul enlaza con dos respuestas, una que le indica cómo implementar un gancho, y otra que le indica que llame a RegisterHotKey. No debería necesitar instalar un enganche para algo tan simple como una tecla de acceso directo Ctrl + S, así que llame al RegisterHotKey.

2

O puede utilizar C# 's MessageFilter. Debería funcionar mientras que cualquier control/formulario del proceso de su aplicación tenga enfoque.

Código de ejemplo:

class KeyboardMessageFilter : IMessageFilter 
{ 
    public bool PreFilterMessage(ref Message m) 
    { 
     if (m.Msg == ((int)Helper.WindowsMessages.WM_KEYDOWN)) 
     { 
      switch ((int)m.WParam) 
      { 
       case (int)Keys.Escape: 
        // Do Something 
        return true; 
       case (int)Keys.Right: 
        // Do Something 
        return true; 
       case (int)Keys.Left: 
        // Do Something 
        return true; 
      } 
     } 

     return false; 
    } 
} 

y que sólo tiene que añadir un nuevo MessageFilter a su aplicación:

Application.AddMessageFilter(new KeyboardMessageFilter()); 
+0

+1 para la solución más limpia, que también es bueno para los eventos del ratón. ¡Gracias! – AVIDeveloper

+4

¿Qué es 'Helper'? y cómo lo importo? –

+0

http://stackoverflow.com/questions/31953297/the-name-helper-does-not-exist-in-the-current-context – niklon