当RawInput监听第二个键盘时,如何在C#中抑制keyevent?

时间:2019-02-04 16:21:48

标签: c# keyboard keyevent raw-input keyboard-hook

我正在尝试编写一个表情符号键盘程序,该程序可以监听第二个键盘。现在,我想禁止第二个键盘的Input并执行SendKeys方法。我正在使用RawInput API

我该如何抑制Keyevent。我已经知道我不能用RawInput做CallNextHookEx()。我已经尝试过在后台使用低级的键盘挂钩来抑制它,但是要么阻止每个输入并且不执行该方法,要么让50%的事件通过但方法被调用。

这里是我的代码:

     RawInputEventArg rawinputevent;

     private void lowlevelInput(object sender, KeyEventArgs e) //lowLevel hook method
     {
        Keys temp = e.KeyCode; //gets Key from the low level hook
        if (rawinputevent.KeyPressEvent.DeviceName.Contains(NameOfSecondKeyboard))//checks if its from second keyboard
        {
            SendKeys.SendWait("it works");
            e.SuppressKeyPress = true;


        }
     }


    private  void GlobalKeyPressed(object sender, RawInputEventArg e)//rawinput event handler
    {
            rawinputevent = e; //RawInputEvent gets passed to the lowlevel hook
    }

当发生某种键盘事件时,将调用lowlevelInput方法。然后,它获取RawInputEvent并检查它是否是第二个键盘。如果是的话,它调用SendKeys方法并禁止该密钥。但是它只会替代密钥,不会发送任何密钥。

我将不胜感激,我感到绝望。

谢谢

0 个答案:

没有答案