屏幕(虚拟)键盘在 Win10 中如何工作
How does on-screen (virtual) keyboard works in Win10
我在 Google 或任何 Microsoft 网站上都没有找到任何相关内容,所以我决定在这里提问。
大家都知道在Win-based OS中有一个virtual keyboard
。我也知道基于 *nix 的 OS,也有。所以,问题是:
HOW DOES IT WORK INSIDE?
我的意思是,让我们举个例子,我在Windows中打开on screen keyboard
10。两者之间的实际区别是什么:
- 通过硬件键盘输入:当我使用它时,就像我按下
X
按钮
- ..并使用虚拟键盘,当我按下同一个按钮时
想象一下,我有 terminal/computer 的管理员权限,是否有 track/distinguish 的任何选项,我第二次按下按钮时不是在硬件键盘上,而是在屏幕上(通过鼠标单击) 的版本?
还有许多不同的软件,例如 AutoIt(yes, it's a language,但它与此示例相关)模拟 pressing the X button
。它们如何在基于 Win 的 OS 中工作?它们 "in-common" 使用默认的屏幕键盘并使用相同的 driver/WinAPI 还是它们之间存在差异?
而第二种情况,介于:
- 默认屏幕键盘
- 编译的 AutoIt 脚本
- ..任何其他模拟
press X button
的软件
我想找出 "how exactly button was pressed" 的唯一方法是通过 taskmgr
检查当前进程列表并找出是否启动了任何东西。或者我在这里完全错了,遗漏了什么?
THE SCOPE
我写了一个 node.js 脚本来模拟 windows 应用程序中的按钮按下行为。
TL:DR business logic short => open notepad.exe and type `Hello world`
有人可以给我任何 advice/recommend 任何 powershell/bat 脚本( 或任何其他解决方案 )并演示 GetAsyncKeyState
检查行为吗?我可以用它轻松检查我自己的 node.js
脚本(不是通过它的功能,而是通过触发 press the X button
事件)
我在这里找到了 node.js
案例的答案:Detecting Key Presses Across Applications in Powershell
SendInput
是在软件中生成用户输入的首选方法。 Windows 屏幕键盘可能将它用于除 Ctrl+Alt+Delete 之外的所有操作,我认为它具有某种特殊处理方式。屏幕键盘只能在某些配置下生成 Ctrl+Alt+Delete。
软件生成的输入与内核中 RIT(原始输入线程)中的正常硬件输入合并。
A low-level keyboard hook 可以检测软件生成的输入。
我在 Google 或任何 Microsoft 网站上都没有找到任何相关内容,所以我决定在这里提问。
大家都知道在Win-based OS中有一个virtual keyboard
。我也知道基于 *nix 的 OS,也有。所以,问题是:
HOW DOES IT WORK INSIDE?
我的意思是,让我们举个例子,我在Windows中打开on screen keyboard
10。两者之间的实际区别是什么:
- 通过硬件键盘输入:当我使用它时,就像我按下
X
按钮 - ..并使用虚拟键盘,当我按下同一个按钮时
想象一下,我有 terminal/computer 的管理员权限,是否有 track/distinguish 的任何选项,我第二次按下按钮时不是在硬件键盘上,而是在屏幕上(通过鼠标单击) 的版本?
还有许多不同的软件,例如 AutoIt(yes, it's a language,但它与此示例相关)模拟 pressing the X button
。它们如何在基于 Win 的 OS 中工作?它们 "in-common" 使用默认的屏幕键盘并使用相同的 driver/WinAPI 还是它们之间存在差异?
而第二种情况,介于:
- 默认屏幕键盘
- 编译的 AutoIt 脚本
- ..任何其他模拟
press X button
的软件
我想找出 "how exactly button was pressed" 的唯一方法是通过 taskmgr
检查当前进程列表并找出是否启动了任何东西。或者我在这里完全错了,遗漏了什么?
THE SCOPE
我写了一个 node.js 脚本来模拟 windows 应用程序中的按钮按下行为。
TL:DR business logic short => open notepad.exe and type `Hello world`
有人可以给我任何 advice/recommend 任何 powershell/bat 脚本( 或任何其他解决方案 )并演示 GetAsyncKeyState
检查行为吗?我可以用它轻松检查我自己的 node.js
脚本(不是通过它的功能,而是通过触发 press the X button
事件)
我在这里找到了 node.js
案例的答案:Detecting Key Presses Across Applications in Powershell
SendInput
是在软件中生成用户输入的首选方法。 Windows 屏幕键盘可能将它用于除 Ctrl+Alt+Delete 之外的所有操作,我认为它具有某种特殊处理方式。屏幕键盘只能在某些配置下生成 Ctrl+Alt+Delete。
软件生成的输入与内核中 RIT(原始输入线程)中的正常硬件输入合并。
A low-level keyboard hook 可以检测软件生成的输入。