gpt4 book ai didi

c# - 多个键盘和低级 Hook

转载 作者:可可西里 更新时间:2023-11-01 07:57:20 25 4
gpt4 key购买 nike

我有一个系统,其中有多个键盘,我真的需要知道击键来自哪个键盘。解释设置:

  1. 我有一台普通的 PC 和 USB 键盘
  2. 我有一个带有一些硬键的外部 VGA 屏幕
  3. 硬键被映射为标准 USB 键盘,发送有限数量的键码(F1、F2、Return、+ 和 -)

我有一个低级 Hook (在 C# 中,但实际上调用了 Win32 功能),即使我的应用程序未获得焦点,它也能够处理输入。

问题是,当使用普通键盘时,一些映射的键代码被外部屏幕上驱动的应用程序拾取。外部屏幕发送并用于确认的按键之一是 VK_RETURN。除非我可以识别“设备”并对其进行过滤,否则用户可能正在执行操作并在屏幕上确认它们,他们甚至都没有看。

我如何知道哪个键盘负责按键操作?

最佳答案

是的,我的错误得到了纠正,每天都在学习新东西。

这是我弥补它的尝试:):

  • 使用::RegisterRawInputDevices() 注册要用于原始输入(两个键盘)的设备。

  • 您可以从 GetRawInputDeviceList() 获取这些设备

  • 注册设备后,您将开始收到 WM_INPUT 消息。

  • WM_INPUT 消息的 lParam 包含一个 RAWKEYBOARD 结构,您可以使用它来确定输入来自的键盘,以及虚拟键码和消息类型(WM_KEYDOWN、WM_KEYUP、...)

  • 因此您可以设置最后一条消息的来源标志,然后将其分派(dispatch)给常规键盘输入处理程序。

关于c# - 多个键盘和低级 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/91234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com