如何抑制键盘输入

本文关键字:输入 键盘 何抑制 | 更新日期: 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;
  }
}