程序没有焦点时如何读取条形码?

7
我想编写一个简单的程序,可以读取条形码并记录下条形码以及扫描时间。不幸的是,我无法保证程序在码被扫描时处于焦点状态。据我了解,大多数条形码扫描器都像键盘一样工作,因此如果程序没有焦点,就会出现问题。有哪些方式可以解决这个问题?请注意,我更喜欢用Java编写,但如果库使其更容易使用,则可以使用.NET。我也没有特定的扫描仪在心中,所以如果有一种型号对此更适合,那么这方面的信息将是有帮助的。我看到了这个问题,但它假设应用程序具有焦点。
3个回答

2

大多数条形码扫描仪的行为类似于键盘,因此需要处理应用程序具有输入焦点。但是,也有一些条形码扫描仪连接到串行端口或连接到USB并提供虚拟串行端口接口。

这些扫描仪必须通过真实或虚拟串行端口进行访问。对于Java,您需要使用Java通信API或任何其他第三方库来提供对串行端口的访问,因为这不可能使用标准Java API。


@Brad: 这可能意味着键盘仿真,也可能不是。 - PleaseStand
@idealmachine,是的,那就是我想表达的意思。使用USB HID和它们自己的报告类型。 - Brad

2
大多数键盘嵌入式条形码扫描器可以通过配置条形码来模拟在发送条形码数据之前按下功能键。Windows API包括RegisterHotkey函数,用于定义系统范围内的热键。当按下热键时,您可以将焦点放在程序窗口上以读取条形码。
谷歌搜索结果显示,有一个可以从Java注册系统范围内的热键。此站点上也有一个关于此问题的问题,其中似乎暗示在Mac OS X中没有公开可用的库来执行此操作,但其中一位回答者发布了他正在开发的此类库的链接。

0
经过一些研究,我按照jarnbjo提到的使用虚拟串口进行了实现,这里有一个示例here(请参见我的回答)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接