键盘输入

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

本节内容

“属性” 说明
关于键盘输入 讨论键盘输入。
使用键盘输入 涵盖与键盘输入关联的任务。
键盘输入参考 包含 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 映射到0x0FF到 OEM 扫描代码和移位状态。 函数提供的信息允许程序通过模拟键盘输入将 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 包含有关由键盘或鼠标以外的输入设备生成的模拟消息的信息。
输入 包含用于合成输入事件的信息,例如击键、鼠标移动和鼠标单击。
KEYBDINPUT 包含有关模拟键盘事件的信息。
LASTINPUTINFO 包含最后一个输入的时间。
MOUSEINPUT 包含有关模拟鼠标事件的信息。

常量

名称 说明
虚拟键代码 系统使用的虚拟键代码的符号常量名称、十六进制值以及鼠标或键盘等效项。 代码按数字顺序列出。

另请参阅