【发布时间】:2010-08-26 17:50:19
【问题描述】:
我有一个应用程序使用以下代码根据第三方应用程序生成的文件获取输入。
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,并且在 OnShown 回调期间调用 this.Activate()。这适用于大多数机器,但有时键盘输入不会传递给我的应用程序,例如,如果按下 F1,则会弹出窗口帮助。
谁能解释这种行为?我需要确保我的表单能够接收这些键盘事件。
干杯, 理查德
【问题讨论】: