关于c#:多个键盘和低级钩子

关于c#:多个键盘和低级钩子

Multiple keyboards and low-level hooks

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

  • 我有普通的PC和USB键盘
  • 我有一个带一些硬键的外部VGA屏幕
  • 硬键映射为标准USB键盘,发送有限数量的键代码(F1,F2,Return,+和-)
  • 我有一个低级挂钩(在C#中,但实际上是在调用Win32功能),即使我的应用程序不集中,它也能够处理输入。

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

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


    是的,我可以纠正,我很糟糕,每天都在学习新知识。

    这是我尝试弥补的:):

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

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

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

    • WM_INPUT消息的lParam包含RAWKEYBOARD结构,您可以使用该结构确定输入的键盘,虚拟键码和消息类型(WM_KEYDOWN,WM_KEYUP等)。

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


    没有办法做到这一点。 Windows为您抽象了这一点。如前所述,您需要编写/修改设备驱动程序。


    推荐阅读

      linux关闭系统的命令?

      linux关闭系统的命令?,系统,工作,命令,时间,用户,指令,通知,目的,终端,表示,

      linux系统nl命令?

      linux系统nl命令?,系统,工作,命令,信息,文件,标准,工具,单位,公式,内容,nl是

      linux命令修复系统?

      linux命令修复系统?,系统,地址,时间,工作,数据,一致,第一,工具,流程,命令,当L

      linux更新系统的命令?

      linux更新系统的命令?,系统,工作,单位,管理,信息,命令,地址,基础,数据,工具,l

      linux系统开发命令?

      linux系统开发命令?,工作,系统,地址,信息,命令,目录,数据,管理,单位,功能,Win

      linux设置命令行长度?

      linux设置命令行长度?,系统,工作,信息,地址,命令,工具,异常,管理,目录,文件,l

      linux系统命令awk?

      linux系统命令awk?,数据,系统,工具,基础,标准,名称,单位,命令,文本,语法,Linu

      linux命令行退出系统?

      linux命令行退出系统?,系统,工作,时间,地址,信息,命令,软件,工具,发行,电脑,

      linux系统命令vim?

      linux系统命令vim?,系统,工作,发行,模式,连续,工具,官方网站,状态,环境,时间

      linux设置代替命令?

      linux设置代替命令?,系统,地址,网络,工作,软件,工具,服务,信息,命令,别名,lin

      linux系统常用命令表?

      linux系统常用命令表?,系统,基础,工作,工具,管理,网络,命令,数据,标准,地址,l

      linux系统命令无效?

      linux系统命令无效?,系统,密码,数据,工具,网络,信息,软件,情况,在线,时报,lin

      linux命令设置时区?

      linux命令设置时区?,时间,系统,国家,大陆,命令,时区,时钟,日期,指令,时分,lin

      linux系统解压缩命令?

      linux系统解压缩命令?,系统,工具,管理,文件,命令,名称,电脑,格式,文件名,目

      linux系统用户命令?

      linux系统用户命令?,系统,工作,地址,信息,管理,命令,目录,时间,电脑,名称,请

      linux系统清缓存命令?

      linux系统清缓存命令?,数据,系统,地址,服务,网络,电脑,缓存,工具,环境,设备,l

      linux设置命令限制?

      linux设置命令限制?,数字,情况,信息,管理,系统,最新,在线,设备,第一,发行,Lin

      linux设置日志命令行?

      linux设置日志命令行?,异常,系统,实时,日志,管理,信息,对比,项目,名称,情况,L

      linux系统中vi命令?

      linux系统中vi命令?,位置,状态,档案,系统,首开,工作,数据,环境,数字,正规,lin

      linux系统负载命令?

      linux系统负载命令?,系统,情况,信息,电脑,工具,管理,状态,时间,命令,灵活,Lin