区分键盘的实时和虚拟按键

时间:2012-04-26 21:13:56

标签: c# keyboard keypress

我正在用C#编写一个程序,它必须模拟键盘的按键命令。

问题是 - 我需要模拟“逼真的”键盘按钮点击,而不是假的。例如,据我所知:

  • 当用户按下键盘上的任何按钮时 - 信号通过USB发送,然后通过键盘的驱动程序继续。

  • 当使用API​​时(SendInput,SendKeys,KeyBoardEvent或其他) - 我们绕过USB和驱动程序,所以基本上可以通过全局钩子方法跟踪这类压力机。

如何模拟真实按键?

  • 我没有C ++知识,所以编写自定义驱动程序不是一种选择。

  • 我不介意使用微控制器或任何其他硬件“解决方案”,只要它便宜..

  • 也许可以通过USB线连接两台PC,以便从PC2向PC1发送逼真的键盘按键信号?

那么方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以使用全局键盘挂钩(WH_KEYBOARD_LL)识别使用SendInput()发送的键盘事件。 它的回调方法LowLevelKeyboardProc收到KBDLLHOOKSTRUCT作为参数。

如果在KBDLLHOOKSTRUCT.flags中设置了LLKHF_INJECTED标志,则使用SendInput()注入键盘事件。