2009-05-05 4 views

risposta

7

Il post di Paul collega a due risposte, una che spiega come implementare un hook e un'altra che ti dice di chiamare RegisterHotKey. Non dovrebbe essere necessario installare un hook per qualcosa di semplice come un tasto di scelta rapida Ctrl + S, quindi chiama lo RegisterHotKey.

2

Oppure puoi usare il MessageFilter di C#. Dovrebbe funzionare mentre è attivo qualsiasi controllo/modulo dal processo dell'applicazione.

codice di esempio:

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

E che semplicemente aggiungere un nuovo MessageFilter alla vostra applicazione:

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

+1 per la soluzione più pulita, che è anche un bene per gli eventi del mouse. Grazie! – AVIDeveloper

+4

cosa fa 'Helper'? e come lo importa? –

+0

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