键盘输入

本部分介绍系统如何生成键盘输入,以及应用程序如何接收和处理该输入。

在本部分中

名字 描述
关于键盘输入 讨论键盘输入。
使用键盘输入 涵盖与键盘输入关联的任务。
键盘输入参考 包含 API 参考。

功能

名字 描述
ActivateKeyboardLayout 设置调用线程或当前进程的输入区域设置标识符(以前称为键盘布局句柄)。 输入区域设置标识符指定区域设置和键盘的物理布局。
BlockInput 阻止键盘和鼠标输入事件到达应用程序。
EnableWindow 启用或禁用对指定窗口或控件的鼠标和键盘输入。 禁用输入后,窗口不会收到鼠标单击和按键等输入。 启用输入后,窗口将接收所有输入。
GetActiveWindow 检索附加到调用线程消息队列的活动窗口的窗口句柄。
GetAsyncKeyState 确定调用函数时键是向上还是关闭,以及之前调用 GetAsyncKeyState 后是否按下了键。
GetFocus 如果窗口附加到调用线程的消息队列,则检索具有键盘焦点的窗口的句柄。
GetKeyboardLayout 检索指定线程的活动输入区域设置标识符(以前称为键盘布局)。 如果 idThread 参数为零,则返回活动线程的输入区域设置标识符。
GetKeyboardLayoutList 检索与系统中当前输入区域设置集对应的输入区域设置标识符(以前称为键盘布局句柄)。 该函数将标识符复制到指定的缓冲区。
GetKeyboardLayoutName 检索活动输入区域设置标识符的名称(以前称为键盘布局)。
GetKeyboardState 将 256 个虚拟密钥的状态复制到指定的缓冲区。
GetKeyNameText 检索表示键名称的字符串。
GetKeyState 检索指定虚拟密钥的状态。 状态指定每次按下键时,键是向上、向下还是切换(打开、关闭)。
GetLastInputInfo 检索最后一个输入事件的时间。
IsWindowEnabled 确定是否为鼠标和键盘输入启用了指定的窗口。
LoadKeyboardLayout 将新的输入区域设置标识符(以前称为键盘布局)加载到系统中。 一次可以加载多个输入区域设置标识符,但每次只有一个进程处于活动状态。 加载多个输入区域设置标识符可以快速在它们之间切换。
MapVirtualKey 将虚拟密钥代码转换为扫描代码或字符值,或将扫描代码转换为虚拟密钥代码。
若要指定用于转换指定代码的键盘布局句柄,请使用 MapVirtualKeyEx 函数。
MapVirtualKeyEx 将虚拟密钥代码映射到扫描代码或字符值,或将扫描代码转换为虚拟密钥代码。 该函数使用输入语言和输入区域设置标识符翻译代码。
OemKeyScan 将 OEMASCII 代码 0 映射到 OEM 扫描代码和转移状态0x0FF。 该函数提供的信息允许程序通过模拟键盘输入将 OEM 文本发送到另一个程序。
RegisterHotKey 定义系统范围的热键。
SendInput 合成击键、鼠标动作和按钮单击。
SetActiveWindow 激活窗口。 窗口必须附加到调用线程的消息队列。
SetFocus 将键盘焦点设置为指定的窗口。 窗口必须附加到调用线程的消息队列。
SetKeyboardState 将 256 字节的键盘键状态数组复制到调用线程的键盘输入状态表中。 这是 GetKeyboardStateGetKeyState 函数访问的表。 对此表所做的更改不会影响任何其他线程的键盘输入。
ToAscii 将指定的虚拟键代码和键盘状态转换为相应的字符或字符。 该函数使用键盘布局句柄标识的输入语言和物理键盘布局来翻译代码。
若要指定用于转换指定代码的键盘布局句柄,请使用 ToAsciiEx 函数。
ToAsciiEx 将指定的虚拟键代码和键盘状态转换为相应的字符或字符。 该函数使用输入语言和由输入区域设置标识符标识的物理键盘布局来翻译代码。
ToUnicode 将指定的虚拟键代码和键盘状态转换为相应的 Unicode 字符或字符。
若要指定用于转换指定代码的键盘布局句柄,请使用 ToUnicodeEx 函数。
ToUnicodeEx 将指定的虚拟键代码和键盘状态转换为相应的 Unicode 字符或字符。
UnloadKeyboardLayout 卸载输入区域设置标识符(以前称为键盘布局)。
UnregisterHotKey 释放以前由调用线程注册的热键。
VkKeyScanEx 将字符转换为相应的虚拟键代码和移位状态。 该函数使用输入语言和由输入区域设置标识符标识的物理键盘布局来翻译字符。

以下函数已过时。

功能 描述
GetKBCodePage 检索当前代码页。
keybd_event 合成击键。 系统可以使用此类合成击键生成 WM_KEYUPWM_KEYDOWN 消息。 键盘驱动程序的中断处理程序调用 keybd_event 函数。
VkKeyScan 将字符转换为当前键盘的相应虚拟键代码和移位状态。

消息

名字 描述
WM_GETHOTKEY 确定与窗口关联的热键。
WM_SETHOTKEY 将热键与窗口相关联。 当用户按下热键时,系统将激活窗口。

通知

名字 描述
WM_ACTIVATE 发送到正在激活的窗口和正在停用的窗口。 如果窗口使用相同的输入队列,则会同步发送消息,首先发送到正在停用的顶级窗口的窗口过程,然后发送到正在激活的顶级窗口的窗口过程。 如果窗口使用不同的输入队列,则会异步发送消息,以便立即激活窗口。
WM_APPCOMMAND 通知窗口用户生成应用程序命令事件,例如,通过使用鼠标单击应用程序命令按钮或在键盘上键入应用程序命令键。
WM_CHAR TranslateMessage 函数翻译 WM_KEYDOWN 消息时,将发布到具有键盘焦点的窗口。 WM_CHAR 消息包含按下的键的字符代码。
WM_DEADCHAR TranslateMessage 函数翻译 WM_KEYUP 消息时,发布到具有键盘焦点的窗口。 WM_DEADCHAR 指定死键生成的字符代码。 死键是生成字符(如 umlaut(双点)的键,该键与另一个字符组合成复合字符。 例如,umlaut-O 字符 () 通过键入 umlaut 字符的死键,然后键入 O 键来生成。
WM_HOTKEY 当用户按下由 RegisterHotKey 函数注册的热键时发布。 该消息放置在与注册热键的线程关联的消息队列的顶部。
WM_KEYDOWN 当按下非系统键时,发布到具有键盘焦点的窗口。 非系统键是未按下 ALT 键时按下的键。
WM_KEYUP 当释放非系统键时,发布到具有键盘焦点的窗口。 非系统键是当 ALT 键未按下时按下的键,或者当窗口具有键盘焦点时按下的键盘键。
WM_KILLFOCUS 在窗口失去键盘焦点之前立即发送到窗口。
WM_SETFOCUS 在窗口获得键盘焦点后发送到窗口。
WM_SYSDEADCHAR TranslateMessage 函数翻译 WM_SYSKEYDOWN 消息时,发送到具有键盘焦点的窗口。 WM_SYSDEADCHAR 指定系统死键的字符代码,即按住 Alt 键时按下的死键。
WM_SYSKEYDOWN 当用户按下 F10 键(激活菜单栏)或按住 Alt 键,然后按另一个键时,发布到具有键盘焦点的窗口。 当当前没有窗口具有键盘焦点时,也会发生这种情况;在这种情况下,WM_SYSKEYDOWN 消息将发送到活动窗口。 接收消息的窗口可以通过检查 lParam 参数中的上下文代码来区分这两个上下文。
WM_SYSKEYUP 当用户释放按下 ALT 键时按下的键时,发布到具有键盘焦点的窗口。 当当前没有窗口具有键盘焦点时,也会发生这种情况;在这种情况下,WM_SYSKEYUP 消息将发送到活动窗口。 接收消息的窗口可以通过检查 lParam 参数中的上下文代码来区分这两个上下文。
WM_UNICHAR TranslateMessage 函数翻译 WM_KEYDOWN 消息时,将发布到具有键盘焦点的窗口。 WM_UNICHAR 消息包含按下的键的字符代码。

结构

名字 描述
HARDWAREINPUT 包含有关输入设备(键盘或鼠标)生成的模拟消息的信息。
INPUT 包含用于合成输入事件的信息,例如击键、鼠标移动和鼠标单击。
KEYBDINPUT 包含有关模拟键盘事件的信息。
LASTINPUTINFO 包含最后一个输入的时间。
MOUSEINPUT 包含有关模拟鼠标事件的信息。

常数

名字 描述
Virtual-Key 代码 系统使用的虚拟键代码的符号常量名称、十六进制值和鼠标或键盘等效项。 这些代码按数字顺序列出。

另请参阅

  • 关于键盘输入