keybd_event 函数 (winuser.h)
合成键击。 系统可以使用这种合成的击键来生成 WM_KEYUP 或 WM_KEYDOWN 消息。 键盘驱动程序的中断处理程序调用 keybd_event 函数。
注意 此函数已被取代。 请改用 SendInput。
语法
void keybd_event(
[in] BYTE bVk,
[in] BYTE bScan,
[in] DWORD dwFlags,
[in] ULONG_PTR dwExtraInfo
);
参数
[in] bVk
类型: BYTE
虚拟密钥代码。 代码必须是 1 到 254 范围内的值。 有关完整列表,请参阅 虚拟密钥代码。
[in] bScan
类型: BYTE
密钥的硬件扫描代码。
[in] dwFlags
类型:DWORD
控制函数操作的各个方面。 此参数可使用以下一个或多个值。
值 | 含义 |
---|---|
|
如果指定,则扫描代码前面有一个前缀字节,其值0xE0 (224) 。 |
|
如果指定,则释放密钥。 如果未指定,则键被按下。 |
[in] dwExtraInfo
类型: ULONG_PTR
与键笔划关联的附加值。
返回值
无
备注
应用程序可以模拟按下 PRINTSCRN 键以获取屏幕快照并将其保存到剪贴板。 为此,请调用 keybd_event ,并将 bVk 参数设置为 VK_SNAPSHOT。
示例
以下示例程序使用 keybd_event VK_NUMLOCK 虚拟键切换 NUM LOCK 指示灯。 它采用一个布尔值,该值指示是应关闭灯 (FALSE) ,还是在 (TRUE) 上关闭。 相同的技术可用于 CAPS LOCK 密钥 (VK_CAPITAL) 和 SCROLL LOCK 键 (VK_SCROLL) 。
#include <windows.h>
void SetNumLock( BOOL bState )
{
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
(!bState && (keyState[VK_NUMLOCK] & 1)) )
{
// Simulate a key press
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// Simulate a key release
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}
void main()
{
SetNumLock( TRUE );
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |