void keybd_event(BYTE bVk, BYTE bScan, DWORD dwFlags,DWORD dwExtraInfo) |
参数 | 意义 |
---|---|
bVk | 虚拟键值,1-254 |
bScan | 硬件扫描码,用 MapVirtualKey(bVk,0) 函数转换 |
dwFlags | 标志 0 :按下键 KEYEVENTF_EXTENDEDKEY KEYEVENTF_KEYUP :放开键 |
dwExtraInfo | 扩展信息,一般为 0 |
// 模拟按键 Ctrl-Alt-Z keybd_event(vk_control,mapvirtualkey(vk_control,0),0,0); keybd_event(VK_LMENU,mapvirtualkey(VK_LMENU,0),0,0); keybd_event(ord('Z'),mapvirtualkey(ord('Z'),0),0,0); keybd_event(ord('Z'),mapvirtualkey(ord('Z'),0),keyeventf_keyup,0); keybd_event(VK_LMENU,mapvirtualkey(VK_LMENU,0),keyeventf_keyup,0); keybd_event(vk_control,mapvirtualkey(vk_control,0),keyeventf_keyup,0); |
// 屏幕截图 keybd_event(vk_snapshot,0,0,0); // 截全屏 keybd_event(vk_snapshot,1,0,0); // 截当前窗口 |
MapVirtualKey(UINT uCode, UINT uMapType) |
参数 | 意义 |
---|---|
uCode | 欲转换的值 |
uMapType | 转换方向: 0:虚拟键转扫描码 1:扫描码转虚拟键 2:虚拟键转扫描码(unshifted) 3:扫描码转虚拟键,区分左右手 |
参数 | 意义 |
---|---|
hwnd | 接收消息的窗口句柄 |
msg | msg 按键消息 |
wParam | VirtualKey 按键值
WM_CHAR : CharCode |
lParam | KeyData 标记 |
常量 | 意义 |
---|---|
WM_KEYDOWN | 键按下 |
WM_KEYUP | 键放开 |
WM_CHAR | 按键,此消息在 WM_KEYDOWN 后会自动发送 |
值 | 意义 |
---|---|
48 - 57 | 数字键 0-9 |
位 | 意义 |
---|---|
0-15 | 重复次数
WM_KEYUP 总是 1 |
16-23 | 扫描码 |
24 | 是否扩展码 |
25-28 | 保留 |
29 | context code,总是 0 |
30 | previous key state,消息发送以前的状态
WM_KEYUP 总是 1 |
31 | transition state,键是否已放开
WM_KEYDOWN 总是 0 |
直接发送文本到指定控件。
参数 | 意义 |
---|---|
hwnd | 接收消息的窗口句柄,一般为文本框 |
msg | WM_IME_CHAR |
wParam | 字符内码,中文为双字节 16 位 |
lParam | 0 |
Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer |
参数 | 意义 |
---|---|
nVirtKey | 虚拟键编码 |
返回值 | 如果键被按下, 最高位(15)为 1
如果键对应的灯亮, 最低位(0) 为 1 |
Declare Function GetKeyboardState Lib "user32" Alias "GetKeyboardState" (pbKeyState As Byte) As Long |
参数 | 意义 |
---|---|
pbKeyState | 填充字节数组, 大小 256 |
返回值 | 返回非零表示成功, 结果数组以虚拟键为下标取值:
如果键被按下, 最高位(7)为 1 如果键对应的灯亮, 最低位(0) 为 1 |