2009-05-05 5 views
5

Можно создать дубликат:
Global keyboard capture in C# applicationГлобальные Крючки клавиатуры (C#)

Может кто-нибудь помочь мне настроить глобальный хук клавиатуры для моего приложения?

Я хочу установить горячие клавиши (например, Ctrl + S), который может быть использован, когда не сосредоточены на фактической форме.

ответ

7

Послания Пола к двум ответам, один расскажет вам, как реализовать крючок, а другой говорит вам позвонить в RegisterHotKey. Вам не нужно устанавливать крючок для чего-то простого, как горячая клавиша Ctrl + S, поэтому вместо этого вызовите RegisterHotKey.

2

Или вы можете использовать MessageFilter C#. Он должен работать, в то время как любой элемент управления/формы из процесса вашего приложения имеет фокус.

Пример кода:

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

И чем просто добавить новый MessageFilter для вашего приложения:

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

+1 для чистейшего раствора, который также хорошо для событий мыши. Благодаря! – AVIDeveloper

+4

Что такое 'Помощник'? и как его импортировать? –

+0

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

Смежные вопросы