3

有没有办法拦截 USB 条形码扫描仪输入,利用它,然后将其传递给具有焦点的应用程序?

我们目前使用条形码扫描仪将订单装运信息加载到 Endicia 和 FedEx。当这些应用程序启动时,查找字段将获得焦点。当您扫描条形码时,文本会被传递到字段中,然后这些应用程序会查找其余的客户信息。这个过程效果很好。

现在我们正试图通过将实际订单重量与应有的重量进行比较来限制拣货错误。为了实时执行此操作,我需要拦截扫描仪输入并使用它检查数据库中计算的重量与实际秤重量。如果它偏离很大,我想显示一条警告消息。

然后,我还需要能够将条形码传递回具有焦点的原始应用程序中的正确字段,以便它可以查找货运数据。

有没有人做过这样的事情?您能否指出一些有关拦截输入然后将其冒泡回到具有焦点的字段的资源?

注意:这是在 Windows 环境中。我最熟悉 C#,但 VB.net 也可以。

4

3 回答 3

2

对于计算机来说,条码扫描器就像一个键盘,没有按键。当您扫描条码时,扫描仪会将条码转换为键盘输入。为了在第二个程序中捕获输入,您需要使用键盘挂钩。

看看这个项目这个项目。您可以制作一个使用这些键盘挂钩之一的程序,并且您使用条形码扫描仪扫描的任何数据也将被路由到您的程序。

于 2013-03-28T15:59:17.033 回答
1

您可以使用该SendInput功能将击键发送到当前聚焦的窗口,只要该窗口具有较低或相等的完整性级别。网络上有大量关于从 C# 调用该函数的信息。

许多条形码阅读器可以配置为在扫描开始时放置任意键码。让它输出您在 PC 上定义为热键的代码,以启动您的程序或将其带到前台。输入条形码后,销毁或隐藏窗口以将焦点恢复到先前的应用程序并调用 SendInput。

于 2013-03-28T15:59:49.437 回答
0

您将要创建一个 windows 窗体,并在窗体的 Load 事件中,将焦点放在应输入条形码的 TextBox 上。然后在 TextBox 的 TextChanged 事件中,做任何你需要的处理。

http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.aspx

误解了这个问题,试着用谷歌搜索一下:

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/5213874a-603e-4378-835d-f6488f382d47

于 2013-03-28T15:34:26.103 回答