如何在扫描插入的C#Key(*)事件中检索字符串? (Windows CE 5)

时间:2013-03-29 11:38:39

标签: c# windows-ce keypreview

我正在开发一个Win CE 5应用程序,它可以捕获通过条形码扫描器扫描的数据。该应用程序应支持一些“系统条码”,这是预先触发应用程序功能的条形码。

这些条形码必须在整个主框架中工作。所以我将主框架的属性“KeyPreview”设置为true,并在主框架的KeyDown事件上注册了KeyEventHandler。

我的问题是,我无法弄清楚如何获得完整的扫描字符串。该字符串长度为12个字符,以换行符结束。 是否有可能在EventHandler中获取整个字符串?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

大多数(如果不是全部)基于Windows CE的条形码扫描仪将扫描数据作为键盘数据注入设备驱动程序。拦截应用程序中数据的最简单方法是,您不必将处理程序连接到每个表单,并担心在处理逻辑之前控件获取键是使用键盘钩子。它就像在桌面上一样工作,因此您找到的适用于桌面上键盘挂钩的任何代码都是有效的(除了WinCE中包含API的DLL是coredll.dll)。

有一个example of keyboard hooking for Windows Mobile on CodeProject可能会为您提供所需的一切基础。从那里开始,它只是在钩子处理程序中进行字符串解析。

答案 1 :(得分:0)

通过设置Form.KeyPreview属性来使用任何Key事件,您应该可以看到扫描程序中的数据。但是你一次只能看到一个“关键”或角色。这些事件仅在每次调用时处理单个字符或键。就你的应用程序所知,它看起来与用户粉碎键盘上的键没什么不同。

如果您有选项,并且可以将您的扫描仪置于非键盘仿真模式并直接挂钩扫描事件,那么您可能会对结果如何独立于GUI工作更满意当用这种方式。通常,对于可以执行此操作的设备,您将作为单个事件接收整个扫描。

我建议您提供有关您正在使用的设备的详细信息,以便有人能够为您提供可能与相关硬件相关的更具体的建议。