У меня есть приложение, использующее следующий код для получения ввода на основе файла, созданного из стороннего приложения.
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104;
if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
{
switch (keyData)
{
case Keys.F1:
clicked_F1(null, null);
break;
case Keys.F2:
clicked_F2(null, null);
break;
case Keys.F3:
clicked_F3(null, null);
break;
}
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
Form.TopMost имеет значение true, и this.Activate () вызывается во время обратного вызова OnShown.Это работает на большинстве машин, но иногда ввод с клавиатуры не будет передаваться моему приложению, например, при нажатии клавиши F1 всплывет справка Windows.
Может кто-нибудь объяснить это поведение?Мне нужно убедиться, что моя форма будет получать эти события клавиатуры.
Приветствия, Ричард