有没有办法拦截USB条码扫描仪input,利用它,然后将其传递到具有焦点的应用程序?
我们目前使用条形码扫描仪将订单装运信息载入Endicia和FedEx。 当这些应用程序启动时,查找字段是焦点。 当您扫描一个条形码时,文本被传递到现场,然后这些应用程序查找其余的客户信息。 这个过程很好。
现在我们试图通过比较实际的订单重量和应该是什么来限制挑选错误。 为了实时做到这一点,我需要拦截扫描仪input,并使用它检查数据库中计算的重量与实际的比例重量。 如果它是closures了一个重大的余量,我想显示一个警告消息。
我还需要能够将条形码传回原始应用程序中具有焦点的正确字段,以便查找货件数据。
有没有人做过这样的事情? 你能指点我一些截取input的资源,然后冒泡回到有焦点的领域吗?
注意:这是在Windows环境中。 我最熟悉C#,但VB.net也会工作。
对于电脑来说,条形码扫描器就像键盘一样,没有钥匙。 扫描条形码时,扫描仪将条形码转换为键盘输入。 为了捕获第二个程序中的输入,你需要使用键盘钩子。
看看这个项目和这个项目 。 您可以制作一个使用这些键盘挂钩之一的程序,您使用条形码扫描仪扫描的任何数据也将被路由到您的程序中。
您可以使用SendInput
函数将击键发送到当前聚焦的窗口,只要该窗口具有较低或相同的完整性级别即可。 网上有很多关于从C#调用这个函数的信息。
许多条形码阅读器可以配置为在扫描开始时放置任意的键码。 让它输出一个代码,你已经定义为一个热键在你的电脑上启动你的程序或把它放在前台。 输入条形码后,销毁或隐藏窗口,将焦点恢复到以前的应用程序并调用SendInput。
您将需要创建一个窗体窗体,并在窗体的Load事件,焦点的文本框,条码应该进入。 然后在TextBox的TextChanged事件中,做任何你需要的处理。
http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.aspx
误解了这个问题,试着用google搜索一下: