虚拟键值表(用于创建快捷键)
虚拟键 十六进制值 十进制值 相应键盘或鼠标键
VK_LBUTTON 1 1 鼠标左键
VK_RBUTTON 2 2 鼠标右键
VK_CANCEL 3 3 Ctrl-Break键
VK_MBUTTON 4 4 鼠标中键
VK_BACK 8 8 Backspace键
VK_TAB 9 9 Tab键
VK_CLEAR 0C 12 Clear键
VK_RETURN 0D 13 Enter键
VK_SHIFT 10 16 Shift键
VK_CONTROL 11 17 Ctrl键
VK_MENU 12 18 Alt键
VK_PAUSE 13 19 Pause键
VK_CAPITAL 14 20 Caps Lock键
VK_ESCAPE 1B 27 Esc键
VK_SPACE 20 32 Space键
VK_PRIOR 21 33 Page Up键
VK_NEXT 22 34 Page Down键
VK_END 23 35 End键
VK_HOME 24 36 Home键
VK_LEFT 25 37 ←键
VK_UP 26 38 ↑键
VK_RIGHT 27 39 →键
VK_DOWN 28 40 ↓键
VK_SELECT 29 41 Select键
VK_PRINT 2A 42 Print键
VK_EXECUTE 2B 43 Execute键
VK_SNAPSHOT 2C 44 Print Screen键
VK_INSERT 2D 45 Ins键
VK_DELETE 2E 46 Del键
VK_HELP 2F 47 Help键
VK_0 0x30 48 0键
VK_1 0x 31 49 1键
VK_2 0x 32 50 2键
VK_3 0x 33 51 3键
VK_4 0x 34 52 4键
VK_5 0x 35 53 5键
VK_6 0x 36 54 6键
VK_7 0x 37 55 7键
VK_8 0x 38 56 8键
VK_9 0x 39 57 9键
VK_A 41 65 A键
VK_B 42 66 B键
VK_C 43 67 C键
VK_D 44 68 D键
VK_E 45 69 E键
VK_F 46 70 F键
VK_G 47 71 G键
VK_H 48 72 H键
VK_I 49 73 I键
VK_J 4A 74 J键
VK_K 4B 75 K键
VK_L 4C 76 L键
VK_M 4D 77 M键
VK_N 4E 78 N键
VK_O 4F 79 O键
VK_P 50 80 P键
VK_Q 51 81 Q键
VK_R 52 82 R键
VK_S 53 83 S键
VK_T 54 84 T键
VK_U 55 85 U键
VK_V 56 86 V键
VK_W 57 87 W键
VK_X 58 88 X键
VK_Y 59 89 Y键
VK_Z 5A 90 Z键
VK_LWIN 5B 91 左Windows键
VK_RWIN 5C 92 右Windows键
VK_APPS 5D 93 应用程序键
VK_SLEEP 5F 95 休眠键
VK_NUMPAD0 60 96 小数字键盘0键
VK_NUMPAD1 61 97 小数字键盘1键
VK_NUMPAD2 62 98 小数字键盘2键
VK_NUMPAD3 63 99 小数字键盘3键
VK_NUMPAD4 64 100 小数字键盘4键
VK_NUMPAD5 65 101 小数字键盘5键
VK_NUMPAD6 66 102 小数字键盘6键
VK_NUMPAD7 67 103 小数字键盘7键
VK_NUMPAD8 68 104 小数字键盘8键
VK_NUMPAD9 69 105 小数字键盘9键
VK_MULTIPLY 6A 106 乘号键
VK_ADD 6B 107 加号键
VK_SEPARATOR 6C 108 分割键
VK_SUBSTRACT 6D 109 减号键
VK_DECIMAL 6E 110 小数点键
VK_DIVIDE 6F 111 除号键
VK_F1 70 12 F1键
VK_F2 71 113 F2键
VK_F3 72 114 F3键
VK_F4 73 115 F4键
VK_F5 74 116 F5键
VK_F6 75 117 F6键
自定义快捷键:
//定义快捷键Ctrl+Q hkid = winform.reghotkey ( function ( id, mod, vk ) { Func_Run(); } , 0x2/*_MOD_CONTROL*/, 0x51/*_VK_Q*/ );
数字键盘上的键的键码值(keyCode)
按键 键码 按键 键码
0 96 8 104
1 97 9 105
2 98 * 106
3 99 + 107
4 100 Enter 108
5 101 - 109
6 102 . 110
7 103 / 111
功能键键码值(keyCode)
按键 键码 按键 键码
F1 112 F7 118
F2 113 F8 119
F3 114 F9 120
F4 115 F10 121
F5 116 F11 122
F6 117 F12 123
控制键键码值(keyCode)
按键 键码 按键 键码 按键 键码 按键 键码
BackSpace 8 Esc 27 Right Arrow 39 -_ 189
Tab 9 Spacebar 32 Dw Arrow 40 .> 190
Clear 12 Page Up 33 Insert 45 /? 191
Enter 13 Page Down 34 Delete 46 `~ 192
Shift 16 End 35 Num Lock 144 [{ 219
Control 17 Home 36 ;: 186 \ 220
Alt 18 Left Arrow 37 =+ 187 ]} 221
Cape Lock 20 Up Arrow 38 ,< 188 '" 222
多媒体键码值(keyCode)
按键 键码
音量加 175
音量减 174
停止 179
静音 173
浏览器 172
邮件 180
搜索 170
收藏 171
最近有个项目调用了一个ocx里面的耗时操作函数, 增加快捷键的时候遇到了问题, 用 加速键只要有一个加速键被执行,其他的就执行不了了, 试了各种办法, 异步,线程回调, 等等 最终也没复现这个问题, 只要调用ocx里面的函数就不行, 我自己写的怎么弄都可以, 郁闷了
最后, 发现用 全局热键 是可以执行了. 但是这样会把系统内置的快捷键给干掉, 不是最好的办法, 项目急只能先这么用了.
下面在窗体里判断窗口是否是激活的, 如果不是激活的状态就注销掉这个全局快捷键, 激活立马注册这个快捷键, 这样就不会对操作其他窗口和文档产生影响了.
import win.ui.accelerator; var accelerator = win.ui.accelerator({ { vkey = 0xD/*_VK_ENTER*/; oncommand = mainForm.demo.oncommand; }; { vkey = 0x2E/*_VK_DELETE*/; oncommand = mainForm.demo2.oncommand; }; },mainForm ); var hkid; mainForm.wndproc = function(hwnd,message,wParam,lParam){ select( message ) { case 6/*_WM_ACTIVATE*/{ var fActive = ::LOWORD(wParam); if(fActive != 0/*_WA_INACTIVE*/ and ::HIWORD(wParam)==0 ){ if(hkid == null){ hkid = mainForm.reghotkey(function(id,mod,vk){ mainForm.demo.oncommand(); } ,,0x2D/*_VK_INSERT*/); } }else { mainForm.unreghotkey(hkid); hkid = null; } } case 0x10/*_WM_CLOSE*/{ mainForm.unreghotkey(hkid); hkid = null; } else{ } } //无返回值则继续调用默认回调函数 }
登录后方可回帖
窗口注册热键:F11全屏,esc退出