得到条形码阅读器价值forms背景监测

我想用c#语言创建一个会计程序。 我想使用条形码阅读器在商店中搜索产品(这对于我的程序是可选的)现在,如果卖家使用条形码阅读器,则以主要forms获取处理方法或事件的条形码值; 如何在窗体背景(没有文本框)中获取句柄方法或事件的条形码值?

注意:我的条形码阅读器是HID(USB接口)

条形码设备的行为类似于键盘。 当您将焦点放在文本框中时,它会将字符发送到文本框,就像您从键盘输入它们一样。

如果您不想使用文本框,则需要订阅键盘事件处理程序以捕获条形码流。

Form1.InitializeComponent():

this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress); 

搬运和配套物品:

 DateTime _lastKeystroke = new DateTime(0); List _barcode = new List(10); private void Form1_KeyPress(object sender, KeyPressEventArgs e) { // check timing (keystrokes within 100 ms) TimeSpan elapsed = (DateTime.Now - _lastKeystroke); if (elapsed.TotalMilliseconds > 100) _barcode.Clear(); // record keystroke & timestamp _barcode.Add(e.KeyChar); _lastKeystroke = DateTime.Now; // process barcode if (e.KeyChar == 13 && _barcode.Count > 0) { string msg = new String(_barcode.ToArray()); MessageBox.Show(msg); _barcode.Clear(); } } 

您必须跟踪“击键”并注意与条形码流一起发送的“回车”。 这可以很容易地在一个数组中完成。 要区分用户击键和条形码击键,您可以做的一个脏技巧是跟踪击键的时间。

例如,如果你得到一个小于100毫秒的击键流,以一个回车结束,你可以假设它是条形码并相应地处理。

或者,如果条形码扫描仪是可编程的,您还可以发送特殊字符或序列。