Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。
user32引用
[System.Runtime.InteropServices.DllImport("user32")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
Windows API
void keybd_event(
BYTE bVk, // 按键的虚拟键值,如回车键为vk_return, tab键为vk_tab
BYTE bScan, // 扫描码,一般不用设置,用0代替就行
DWORD dwFlags, // 选项标志,如果为keydown则置0即可,如果为keyup则设成"KEYEVENTF_KEYUP"
DWORD dwExtraInfo // 一般也是置0即可
);
模拟按下'A'键
keybd_event(65,0,0,0);
keybd_event(65,0,KEYEVENTF_KEYUP,0);
模拟按下'ALT+F4'键
keybd_event(18,0,0,0);
keybd_event(115,0,0,0);
keybd_event(115,0,KEYEVENTF_KEYUP,0);
keybd_event(18,0,KEYEVENTF_KEYUP,0);
模拟按下'ctrl+v'键
keybd_event((byte)Keys.ControlKey, 0, 0, 0);//按下
keybd_event((byte)Keys.V, 0, 0, 0);
keybd_event((byte)Keys.ControlKey, 0, 0x2, 0);//松开
keybd_event((byte)Keys.V, 0, 0x2, 0);
附:常用模拟键的键值对照表
按键 | 虚拟键值 |
---|---|
A-Z | 65-90 |
0-9 | 48-57 |
小键盘0-9 | 96-105 |
* | 106 |
+ | 107 |
小键盘Enter | 108 |
- | 109 |
. | 110 |
/ | 111 |
F1-F12 | 112-123 |
这篇文档对您是否有帮助?