C ++控制台窗口仅从USB获取输入

时间:2011-08-23 12:42:38

标签: c++ windows hook

我对C ++并不擅长,所以答案很好/详细解释将不胜感激,谢谢。 我做了一个小型的C ++程序,它从RFID阅读器(类似于条形码扫描仪)输入,我试图在互联网上搜索一个简单的答案,但结果好坏参与。

我有两个选择,第一个选择很多:

  1. 将控制台应用程序保留在后台(只需最小化就可以了)并从USB RFID阅读器中取出按键,并且只从该来源获取,因此PC上的用户可以使用他/她的键盘并打开其他程序没有应用程序聚焦。

  2. 即使意外按下键盘或鼠标也能使应用程序保持清晰,因此即使单击任务栏,或者应用程序失去焦点,它也会重新获得焦点,这样它就可以继续完成它的工作

  3. 我需要的答案不能仅仅是“使用此函数SetWindowFocus()”或“使用此库和bla bla”,我需要详细解答我需要做什么,因为我甚至不知道在哪里一开始,非常感谢你的帮助!

3 个答案:

答案 0 :(得分:3)

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

首先阅读http://www.toymaker.info/Games/html/raw_input.html

为此,除控制台窗口外,您的控制台应用程序还需要创建一个普通窗口(我认为它可以隐藏)。

听起来你真的需要一些关于Win32编程的教程。

由于您没有向我们提供任何详细信息(您使用的是哪种编译器,是否有您喜欢使用的特定框架库),因此我们很难为您提供具体的建议。但是在Raymond Chen的博客“The Old New Thing”中有一些关于Win32窗口创建和消息处理的好的介绍性文章。甚至有a complete skeleton example you can use to start your own programs

答案 1 :(得分:0)

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

请参阅this blog post,了解Microsoft在较新版本的Windows中采取的步骤,以避免应用程序窃取焦点并“始终处于最佳状态”。

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

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

答案 2 :(得分:-1)

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

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