如何抑制键盘输入
本文关键字:输入 键盘 何抑制 | 更新日期: 2023-09-27 17:49:38
所以我想做一个程序,禁用所有键盘输入,但仍然可以检测当一个键被按下(无关紧要)。
我尝试使用BlockInput
方法,但它阻止了所有输入(鼠标和键盘),并且不允许进一步检测键盘按压。
这是我当前的代码(函数是一个计时器与1滴答间隔)
private void detect_key_press_Tick(object sender, EventArgs e)
{
Process p = Process.GetCurrentProcess();
if (p != null)
{
IntPtr h = p.MainWindowHandle;
//SetForegroundWindow(h);
if (Keyboard.IsKeyDown(Key.A))
{
//SendKeys.SendWait("k");
this.BackColor = Color.Red;
}
else
{
this.BackColor = Control.DefaultBackColor;
}
}
}
我该怎么做呢?谢谢。
编辑
我试着
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
e.Handled = true;
e.SuppressKeyPress = true;
}
但没有成功。
我想你使用的是Windows窗体?
如果你在表单上设置KeyPreview为true,并在表单的KeyDown上创建一个事件,你可以用这种方式处理键盘输入。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.S) // some accepted key
//Do something with it
else
{
//or cancel the key entry
e.Handled = true;
e.SuppressKeyPress = true;
}
}