
'当用户按下一个键时,
'1.键盘将检测到此操作,然后通过键盘控制器将扫描代码发送到计算机;
'键盘扫描代码与特定硬件有关。不同的制造商可能会对同一密钥使用不同的扫描代码。
'2.计算机接收到扫描代码后,将其交给键盘驱动程序;
'3.键盘驱动程序将此扫描代码转换为键盘虚拟代码;
'虚拟代码与特定硬件无关。对于不同制造商的键盘,相同键的虚拟代码始终相同。
'3.然后,键盘驱动程序将键盘操作的扫描代码,虚拟代码和其他信息传递给操作系统;
'4.操作系统将获取的信息封装在键盘消息中,然后将键盘消息插入消息队列中。
'5.通过Windows消息系统,将键盘消息发送到某个窗口;
'6.收到消息后,窗口所在的应用程序可以了解键盘操作,然后决定做出一定的响应
'键盘消息:WM_KEYDOWN
'nVirtKey =(int)wParam; //虚拟代码
'lKeyData = lParam; //有关键盘操作的信息
'键盘消息WM_KEYDOWN的第二个参数lParam比较复杂
'其功能是指定重复次数,扫描代码,扩展键标记,上下文代码,先前键状态标记,转换状态标记等。
'lParam:总长度4字节,32位

'0-15位:用于指定当前消息的重复次数。当用户按下按键一段时间后,
'该值是自动计算按键的次数;如果长按此键,将发送多条消息,
'并且重复次数不会累积
'16 –23:指定扫描代码
'24:指定键是否为扩展键(例如alt,ctrl),如果值为1,则为扩展键,否则为0
'25 –28:保留
'29:指定上下文代码。对于WM_KEYDOWN和WM_KEYUP消息,该值始终为0,
'对于WM_CHAR消息,如果同时按下alt键,则该值为1,否则为0.
'30:指定前键的状态。如果在发送消息之前按下该键,则其值为1,否则为0
'31:指定转换状态,对于WM_KEYDOWN,其值始终为0;
'对于WM_CHAR,如果释放密钥,则其值为1,否则为0.
常见的Windows键盘按键虚拟代码
键盘常用的ASCII码
ESC键VK_ESCAPE(27)
Enter键:VK_RETURN(13)
TAB键:VK_TAB(9)

大写锁定键:VK_CAPITAL(20)
Shift键:VK_SHIFT()
Ctrl键:VK_CONTROL(17)
Alt键:VK_MENU(18)
空格键:VK_SPACE(/ 32)
退格键:VK_BACK(8)
左徽标键:VK_LWIN(91)
右徽标键:VK_LWIN(92)
鼠标右键:VK_APPS(93)
插入键:VK_INSERT(45)
主页按钮:VK_HOME(36)
Page Up:VK_PRIOR(33)
PageDown:VK_NEXT(34)
结束键:VK_END(35)
删除键:VK_DELETE(46)
方向键(←):VK_LEFT(37)

方向键(↑):VK_UP(38)
方向键(→):VK_RIGHT(3 9)
方向键(↓):VK_DOWN(40)
F1键:VK_F1(112)
F2键:VK_F2(113)
F3键:VK_F3(114)
F4键:VK_F4(115)
F5键:VK_F5(116)
F6键:VK_F6(117)
F7键:VK_F7(118)
F8键:VK_F8(11 9)
F9键:VK_F9(120)
F10键:VK_F10(121)
F11键:VK_F11(122)
F12键:VK_F12(123)
Num Lock键:VK_NUMLOCK(144)

键盘0:VK_NUMPAD0(96)
键盘1:VK_NUMPAD0(97)
键盘2:VK_NUMPAD0(98)
键盘3:VK_NUMPAD0(9 9)
键盘4:VK_NUMPAD0(100)
键盘5:VK_NUMPAD0(101)
键盘6:VK_NUMPAD0(102)
键盘7:VK_NUMPAD0(103)
键盘8:VK_NUMPAD0(104)
键盘9:VK_NUMPAD0(105)
键盘。:VK_DECIMAL(110)
键盘*:VK_MULTIPLY(106)
键盘+:VK_MULTIPLY(107)
键盘-:VK_SUBTRACT(10 9)
键盘/:VK_DIVIDE(111)
暂停中断键:VK_PAUSE(1 9)
滚动锁定键:VK_SCROLL(145)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-332453-1.html
用军舰或战机紧逼甚至撞击比较妥当
任何人任何组织都承担不起这个历史罪责