【发布时间】:2021-02-11 10:10:08
【问题描述】:
前言(虚构的。所以有人不会问'你想做什么?): 我有一个 Win32 C++ 应用程序。 此应用程序想知道用户何时想通过 Ctrl+Esc 打开开始菜单 当然,Ctrl+Esc 是从操作系统触发的,因此应用程序永远不会看到它。
我看过Windows Virtual Keys。 我看到有很多 OEM 特定的 VK (0x92-0x96,0xE0,0xE9-0xF5,..)
所以我的想法是:
键盘过滤器驱动程序。 当我的应用程序获得焦点时,它会告诉键盘过滤器驱动程序。 当我的驱动程序看到 Ctrl 按下并且 Esc 按下时(并且我的应用程序具有焦点): -- 吞下 Esc 并将其替换为会生成 VK_0x92(OEM 特定)的扫描码。
自从我吞下 Esc 后,操作系统将永远不会看到 Ctr+Esc
然后我的应用程序将看到 VK_0x92 并知道用户想要打开开始菜单并执行一些操作。
我的问题是如何在驱动程序 (KEYBOARD_INPUT_DATA) 中“处理”输入以便发表意见 VK_0x92 出现在我的应用程序中?
提前感谢您的任何指点。
【问题讨论】:
标签: filter-driver