2011-08-23 71 views
1

我在C++中不够高效,所以回答得很好/详细解释,谢谢。 我已经做了一个小型的C++程序,它从一个RFID阅读器获取输入(类似于条形码扫描器)我已经尝试通过互联网搜索一个简单的答案,但有一些混合的结果。C++控制台窗口仅接受来自USB的输入

我有两个选择,第一个是多参访:

  1. 保持控制台应用程序在后台(只是最小化是好的),并从USB RFID阅读器采取按键,只有从源头,因此PC上的用户可以使用他/她的键盘并打开其他程序,而无需使应用程序处于焦点。

  2. 保持在即使键盘或鼠标不小心按下关注的应用程序,所以即使在任务栏上单击,或应用程序失去焦点会重新集中注意力,因此它可以做它携带的工作

我需要的答案不能仅仅是“使用这个函数SetWindowFocus()”或者“使用这个库和bla bla”,我需要一个关于我需要做什么的详细答案,因为我甚至不知道从哪里开始, 非常感谢您的帮助!

+0

那么您如何获得RFID输入呢?作为键盘事件?奇怪的。 – wilx

+0

@wilx:从历史上看,这是有道理的。 RFID作为条形码阅读器的后继产品而出售,而传统上也将其用作键盘。即使在USB上市之前,他们也实现了PS/2 pass-through连接器。相当有用:如果扫描仪无法读取条形码,您只需手动输入打印的数字。根本不需要重新编码。 – MSalters

回答

3

RFID阅读器是否显示为HID键盘? Win32原始输入API将允许您订阅特定键盘并区分其输入与真实键盘。

开始通过阅读http://www.toymaker.info/Games/html/raw_input.html

要做到这一点,您的控制台应用程序将需要除了控制台窗口中创建一个普通的窗口(我认为它可以隐藏)。

听起来你真的需要一些关于Win32编程的教程。因为你没有给我们任何细节(什么编译器,你使用的IDE,是否有一个特定的框架库,你喜欢使用),我们很难给你具体的建议。但是在Raymond Chen的博客“The Old New Thing”中,有关于Win32窗口创建和消息处理的一些很好的介绍性文章。甚至还有a complete skeleton example you can use to start your own programs

+0

感谢您的快速回复!对不起,我没有足够的解释,正如我所说,尽管我没有任何关于C++的东西,但我真的是一个PHP web程序员,但我的工作叫我尝试制作这个小程序。我刚刚下载了DevC++来编写/编译我的程序(有没有更好的一个我应该使用)哦,当你说什么框架库你喜欢用,因为我甚至不知道这意味着什么这与使用名称空间xxx有关)?... ...这是embarressing ..我会看看你的链接现在,谢谢 – Zephni

+0

哦,是的,它确实显示为设备管理器中的HID,当我插入到USB – Zephni

0

W.r.t,始终保持专注,你不能这样做。

请参阅this blog post了解微软在新版Windows中采取的步骤,以避免应用程序窃取焦点并始终处于顶层状态。

我建议要么全屏,这样可以避免单击任务栏(但可以使用Windows按钮),或者,深入输入设备以便始终获取事件,无论用户在做什么。

这两种解决方案都不是很整洁,但在Windows上,这就是规则。

+0

您无需专注即可订阅并捕获特定指定输入设备的所有事件。 –

+0

@Ben:OP写了关于保持焦点......我试图阻止尝试那个兔子洞的相关痛苦。 – Macke

+0

@Ben有没有更简单的方法来做这件事,而不是所有这些复杂的编程?它显示为一个HID设备顺便说一句。 – Zephni

-1

我有同样的问题。我搜索并尝试了很多东西。

随着hidapi例如RFID显示信息,但我无法读取数据。 C++程序可以工作,但RFID阅读器在任何地方都会写入十六进制数。也许每个人都有一些代码将读者初始化为我的程序。