如何模拟物理键盘输入

时间:2019-10-17 04:25:26

标签: c# winforms keyboard simulator raw-input

我正在使用一个C#Winforms项目,该项目从多个指定的条形码扫描仪读取(应用程序需要从扫描仪中分离数据以采取正确措施)

我使用原始输入按设备ID进行过滤,效果很好。

现在我要开发一个测试应用程序,以模拟扫描仪(键盘)输入(以模拟日常工作)

我尝试过一些文章,这些文章告诉我使用Windows API,例如SendInput,SendMessage ...,但是其中不包含真实设备ID(物理设备ID),因此我的测试应用无法识别这些输入。

隐藏的设备ID如下所示: \ ?? \ HID#Vid_0536&Pid_01c1&MI_01#9&25ca5370&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}

反正有没有使用C#和Winforms模拟物理输入设备?或将密钥发送到具有物理(或伪造)设备ID的活动应用程序?

谢谢。

2 个答案:

答案 0 :(得分:0)

我们与扫描仪合作。如果进行扫描,则对旧的WinForms程序使用TextControl。在这种情况下,TextControl输入既可以通过键盘选择,也可以通过任何扫描仪选择。有时您需要特殊的扫描仪控件来接受该数据,扫描仪文档也告诉您如何(添加)将它们与条形码一起发送。

因此,当扫描仪将其数据发送到TextControl时,扫描仪还将发送“ Return”键以接受。是的,您可以使用Windows API发送附加键盘输入。如果以这种方式使用它,则扫描仪的技术版本将解耦,因为它只是TextControl的输入设备,可以是任何东西,只要它被识别为(usb)输入设备即可。

答案 1 :(得分:0)

我通过创建假键盘,将ID,名称等设置为空来结束了该问题, 在原始输入处理程序中,我检查是否按下了键,如果没有硬件ID,则假定是来自伪ID,然后将伪设备ID附加到该消息,现在模拟器正在运行。 谢谢您的支持。