限制c#中特定设备的输入

本文关键字:输入 限制 | 更新日期: 2023-09-27 17:52:40

我有两个设备(KeyBoard和BarCodeScanner)和2个文本框(文本框1和文本框2)。

现在我想限制用户,他只能在文本框1中使用键盘,在文本框2中使用条形码扫描仪。

这在c#中是如何实现的?

限制c#中特定设备的输入

你应该看看这个:读取数据从条形码扫描器在。net (c#) windows应用程序!

因此,扫描器可能会发送特殊字符来帮助您识别输入是否来自扫描器,或者它可能为您提供了一个额外的库,您可以使用它来检测此类事件。让我们假设扫描器的行为与键盘完全相同,没有任何特殊字符来帮助您知道它来自扫描器,也没有任何可以使用的来自制造商站点的额外库。然后你可以使用的是:在第二个文本框的KeyDown事件中测量输入速度。

我怀疑扫描器立即输入代码,所以你会有一个巨大的打字速度测量。

然后,如果输入速度大于一个阈值(例如,对于人类来说,世界速度记录大约是每分钟1000个字符),那么您将删除输入的文本。

我只使用过一次条码扫描器。在我的扫描器是可能的,迫使它产生特殊的控制序列之前,它通过输入到计算机。这种行为是通过扫描仪的本地软件掌握的。但是我不能详细说明,因为我没有参与定制——我的同事在我之前定制过。
在我的情况下,扫描仪在扫描日期之前发送Ctrl+J,我能够确定哪个源输入来自键盘或条形码扫描仪。

我想这取决于扫描仪是如何连接的。如果它只是连接在电脑和键盘之间,你就不走运了,因为没有任何可靠的方法来区分键盘输入和扫描仪输入。

如果它是单独连接的,那么一定有一些方法可以获得扫描仪数据,可能是通过扫描仪软件提供的类,所以你必须使用那里提供的并将你接收到的数据放入TextBox2.Text。至于禁用此框的键盘输入,您可以通过设置TextBox2.ReadOnly = true来简单地阻止任何输入。