2016-03-31 3 views
1

У меня есть этот кусок кодаКак использовать функцию keydown в winform через другие окна?

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if(e.KeyCode== Keys.Z) 
     { 
      BarTimer.Value = 0; 
      timer1.Start(); 
      timer1.Interval = 500; 
      BarTimer.Minimum = 0; 
      BarTimer.Maximum = 80; 
     } 
    } 

И это прекрасно работает, но я хочу, чтобы иметь возможность нажать на нее, когда в полноэкранном режиме приложения, так что я могу видеть индикатор на моем втором мониторе. Есть ли свойство или что-то, что я могу изменить, чтобы заставить его работать так?

+0

ли вы имеете в виду, чтобы ответить на ключ, когда печатное фокус не в своей форме, но в другом окне? –

+0

Да, это все. – dvs

+0

Является ли другой экран в вашем приложении или может быть в любом другом приложении? –

ответ

1

Если это один ключ, вы можете использовать RegisterHotKey. В этом ответе есть пример кода: how to use RegisterHotKey и один из них. Документация Microsoft C++ - here.

Если вы хотите перехватить весь ввод клавиатуры, вам понадобится ключ. Я предлагаю вам google WH_KEYBOARD_LL и SetWindowsHookEx. Но я не думаю, что вы можете сделать это в C#; Я видел только ключевые крючки, написанные на C/C++. Они также заставят некоторые брандмауэры проявить интерес - перехват всего ввода клавиатуры можно считать потенциально враждебным.

+0

Хорошо, спасибо! – dvs

1

Привет, я знаю хороший учебник, который я нашел в проекте кода. Это работало для меня, когда мне нужно было что-то вроде этого.

http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook

С уважением,

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/18997623) – Blackwood