如何判断键盘输入是否来自条形码扫描仪?

Gyp*_*psy 14 .net keyboard barcode-scanner

在一台计算机上,我有一个常规键盘和一个模拟键盘的条形码扫描仪.当我的应用程序获得键盘输入时,如何确定该输入是来自条形码扫描仪还是真正的键盘?

Cod*_*ray 7

你会得到两者的意见.当然不是同时发生的.它将全部放入队列中,但Windows将处理来自两个键盘的键事件.

不过,不要无助.正如David Heffernan建议的那样,你可以通过将两个键盘插入计算机,打开记事本,然后键入随机字符来查看哪一个产生输入,从而轻松解决这个问题.

您回复说要"用C#代码检查",但我不知道这意味着什么.如何创建一个从键盘读取输入并在屏幕上显示的控制台应用程序?

using System;

class AdvancedKeyboardTester
{
   static void Main(string[] args)
   {
      for (; ;)
      {
         Console.ReadKey();
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

当你厌倦了乐趣并且想要退出程序时按Ctrl+ C.


编辑:听起来你正在寻找这个RegisterRawInputDevices功能,它允许你为所有键盘启用原始输入,然后枚举结果以确定哪个设备发送了消息.

幸运的是,看起来有人已经为此编写了一个C#包装器库,可以在Code Project上下载:使用C#的Raw Input来处理多个键盘


编辑2 :(似乎信息只是从评论中汲取)

如果您使用条形码扫描仪,这将变得更加容易.因为它们是为此目的明确设计的,所以它们几乎都是可编程的.这意味着您可以告诉他们为输入添加前缀(和/或后缀)以及指示输入来自条形码扫描器而非标准键盘的一些标记字符.(有关详细信息,请查看条形码扫描仪的用户手册.)然后,您所要做的就是根据这些标记字符的存在与否来过滤掉键盘输入.您还可以检查输入前缀和后缀之间字符的速度.