我想在c#windows窗体应用程序中实现键盘按钮按下命令。假设如果达到某个值,我想使用windows窗体应用程序实现按下“L”键。这可能吗?怎么做?
答案 0 :(得分:3)
这可能会为你做到这一点
但是,更好的方法是将表单的KeyPreview
属性设置为true
,然后将代码放入表单的keyDown
事件中(并将e.Handled = true设置为好吧,防止将键事件传递给任何具有焦点的控件。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.L)
{
//Do here
}
}
您还希望查看MSDN: Handle Keyboard Input at the Form Level哪些状态有关Windows窗体提供了在消息到达控件之前在表单级别处理键盘消息的功能。
修改强>
WM_KEYDOWN:当按下非系统键时,此消息将以键盘焦点发布到窗口。非系统键是在未按下ALT键时按下的键。
SendKeys:使用SendKeys将键击和击键组合发送到活动应用程序。此类无法实例化。要将键击发送到类并立即继续执行程序流程,请使用“发送”。要等待按键启动的任何进程,请使用SendWait。
所以当你从任何设备接收信号时
System.Windows.Forms.SendKeys.Send("S");
和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
}
}
除了Programmatically generate keypress events in C#?之外,还会为您提供实现任务的想法
答案 1 :(得分:0)
实际上发生的事情是我通过蓝牙从Arduino和Windows收到一些数据到Windows窗体应用程序 一些传感器远程连接。根据这些数据我有一个游戏开发使用" construct2"我需要控制。 游戏用户使用键盘键来控制它。
在游戏中Key" S"按下它会射击目标,当另一把钥匙按下它会做其他事情。 所以我基本上需要做的是根据Windows窗体应用程序中收到的信号实现键盘按键。 如果可能,请告诉我?我不需要从内部识别关键的新闻事件,但我需要实现按键 来自申请表