如何检索一个字符串在c#键(*)事件被插入扫描?(Windows CE 5)

本文关键字:插入 事件 扫描 CE Windows 检索 何检索 字符串 一个 | 更新日期: 2023-09-27 18:06:32

我正在开发一个wince5应用程序,它可以捕获通过条形码扫描仪扫描的数据。应用程序应该支持一些"系统条形码",即触发应用程序功能的预定义条形码。

这些条形码必须在整个主机中工作。因此,我将主机帧的属性"KeyPreview"设置为true,并在主机帧的KeyDown事件上注册一个KeyEventHandler。

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

提前感谢您的帮助

如何检索一个字符串在c#键(*)事件被插入扫描?(Windows CE 5)

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

在CodeProject上有一个Windows Mobile的键盘挂钩的例子,它可能会给你提供你需要的一切基础。然后,在钩子处理程序中进行简单的字符串解析。

通过设置表单来使用任何Key事件。KeyPreview属性应该允许您查看来自扫描仪的数据。但你一次只能看到一个"键"或字符。这些事件在每次调用时只处理单个字符或键。就你的应用程序而言,它看起来和用户砸键盘上的键没有什么不同。

如果您有这个选项,并且可以将您的扫描仪置于非键盘仿真模式并直接挂钩到扫描事件,那么您可能会对结果更满意,因为当使用这种方式时,它如何独立于GUI工作。通常情况下,设备可以做到这一点,你会收到整个扫描作为一个单一的事件。

我建议包括你正在使用的设备的详细信息,这样别人可能会给你更具体的建议,可能与所讨论的硬件相关。