【问题标题】:Log second keyboard events记录第二个键盘事件
【发布时间】:2017-02-16 23:24:19
【问题描述】:

我有自己的键盘和一个 USB 条形码扫描仪,就像第二个键盘一样工作。

我想使用主键盘控制计算机(就像你通常做的那样)和第二个键盘(实际上是条形码扫描仪)将所有输入记录到一个文件中。

这可能吗?

关键是,我可以在互联网、word、excel 或其他任何地方。我将使用主键盘写入该进程,而在后台第二个键盘(条形码扫描仪)可能同时写入但写入日志文件。我现在可以使用的程序永远不会知道第二个键盘输入。

谢谢,欢迎大家提出建议。

【问题讨论】:

  • 我建议学习 Windows 设备驱动程序。这将告诉您如何为第二个键盘添加挂钩。

标签: c++ c windows


【解决方案1】:

您可以使用Raw Input API 在操作系统处理键盘事件之前对其进行监控。 API 会告诉您哪个设备正在发送每个事件,因此您可以仅从扫描仪记录事件。

但是,原始输入 API 不允许您阻止输入,因此要阻止扫描仪的事件作为普通键盘事件处理,您需要使用 SetWindowsHookEx() 设置一个键盘挂钩来关闭事件。

但是,SetWindowsHookEx() 不会报告哪个设备正在发送每个事件,因此您必须手动协调这两个 API。当原始输入检测到键盘事件时,根据事件来自哪个设备设置一个标志。当钩子检测到相应的事件时,检查标志,如果标志指示扫描仪设备,则关闭事件。

参见 CodeProject 上的Combining Raw Input and keyboard Hook to selectively block input from multiple keyboards

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 1970-01-01
    • 2015-08-03
    • 2018-05-25
    • 2013-02-13
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2014-07-13
    相关资源
    最近更新 更多