这可能对你有用
但是,更好的方法可能是将表单的KeyPreview属性设置为true,然后将代码放入表单的keyDown事件中(并设置 e.Handled = true ,以防止按键事件传递给任何具有焦点的控件)。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.L)
{
//Do here
}
}
Run Code Online (Sandbox Code Playgroud)
您还想查看MSDN:在表单级别处理键盘输入,其中说明了 Windows 窗体提供了在消息到达控件之前在表单级别处理键盘消息的能力。
编辑
WM_KEYDOWN:当按下非系统键时,此消息将发布到具有键盘焦点的窗口。非系统键是在未按下 ALT 键时按下的键。
SendKeys:使用 SendKeys 将击键和击键组合发送到活动应用程序。该类无法实例化。要将击键发送到班级并立即继续程序流程,请使用发送。要等待由击键启动的任何进程,请使用 SendWait。
所以当您从任何设备接收信号时
System.Windows.Forms.SendKeys.Send("S");
Run Code Online (Sandbox Code Playgroud)
并按 keyDown
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.S)
{
//Shooting Code
}
else if (e.KeyCode == Keys.L)
{
//Some Other Code
}
}
Run Code Online (Sandbox Code Playgroud)
除此之外,在 C# 中以编程方式生成按键事件?还将给您一个执行任务的想法