2009-05-05 6 views

Répondre

7

La publication de Paul propose deux liens, l'un vous expliquant comment implémenter un hook et l'autre vous invitant à appeler RegisterHotKey. Vous ne devriez pas avoir besoin d'installer un hook pour quelque chose d'aussi simple qu'une touche de raccourci Ctrl + S, alors appelez RegisterHotKey à la place.

2

Ou vous pouvez utiliser MessageFilter de C#. Cela devrait fonctionner pendant que n'importe quel contrôle/formulaire du processus de votre application a l'accent.

Exemple de code:

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; 
    } 
} 

Et que d'ajouter simplement une nouvelle MessageFilter à votre demande:

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

+1 pour la solution la plus propre, ce qui est également bon pour les événements de la souris. Merci! – AVIDeveloper

+4

qu'est-ce que 'Helper' faire? et comment puis-je l'importer? –

+0

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