2

有带 2 个 USB 键盘 KeyboardA 和 KeyboardB 的 PC

User1 在 KeyboardA 上工作。

有时 User2 在 KeyboardB 上键入。

任务:来自 KeyboardB 的所有输入都重定向到文件。

如果我使用 SetWindowsHookEx 我可以挂钩输入和停止消息,但无法检测到 KeyboardA 或 KeyboardB(有没有办法检测到什么键盘?)

如果我使用 RegisterRawInputDevices,我会检测到 KeyboardA 或 KeyboardB,但无法停止消息,并且来自 KeyboardB 的输入会转换为 User1 界面(有办法停止消息吗?)。

可能我需要另一种将数据从键盘重定向到特定位置的方法吗?

4

1 回答 1

2

我的解决方案:

  1. 使用 SetWindowsHookEx 阻止所有输入

  2. 在 RawInput 中确定键盘

  3. 如果是键盘在活动窗口中重新发送输入

  4. 如果是 KeyboardB 重定向输入

  5. 对于第 1 项中的禁用块,我检查 LLKHF_INJECTED 上的 KeyboardHookStruct.Flags 而不是块

细节

于 2013-01-03T10:28:14.507 回答