2009-05-05 6 views

Antwort

7

Pauls Post verweist auf zwei Antworten, eine sagt Ihnen, wie Sie einen Hook implementieren, und eine andere sagt Ihnen, dass Sie RegisterHotKey aufrufen sollen. Sie sollten keinen Haken für etwas so Einfaches wie einen Hotkey Strg + S installieren müssen, rufen Sie stattdessen .

2

Oder Sie können C# MessageFilter verwenden. Es sollte funktionieren, während ein Steuerelement/Formular aus dem Prozess Ihrer Anwendung den Fokus hat.

Beispielcode:

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

Und als einfach eine neue Message in der Anwendung einzufügen:

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

+1 für die sauberste Lösung, die für Maus-Ereignisse auch gut. Vielen Dank! – AVIDeveloper

+4

Was macht 'Helfer'? und wie importiere ich es? –

+0

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