原作者:esir
模拟键盘按键
检测NumLock状态、模拟NumLock按键花了我一个多小时。这个问题有待更深入研究。
核心代码:
分支 IDC_BTN1 '模拟按Win
keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY,0) '左WIN键
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0)
分支 IDC_BTN2 ''模拟按Win+M
keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY,0) '左WIN键
keybd_event(VK_M, 0, KEYEVENTF_EXTENDEDKEY ,0) 'M键
keybd_event(VK_M, 0, KEYEVENTF_KEYUP ,0)
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0)
分支 IDC_BTN3 '模拟按NumLock、检测灯状态
如果 GetKeyState(VK_NUMLOCK) 与 1 则 'GetKeyState(VK_NUMLOCK)如果返回值最高位是1,NumLock亮着
MessageBox(hwin,"NumLock正打开,点 确定 关闭","信息:",MB_OK)
否则
MessageBox(hwin,"NumLock未打开,点 确定 打开","信息:",MB_OK)
如果结束
变量 os 为 OSVERSIONINFO
os.dwOSVersionInfoSize=取尺寸(os)
GetVersionEx(@os)
如果 os.dwPlatformId=VER_PLATFORM_WIN32_NT 则 'NT平台
keybd_event(VK_NUMLOCK, 0, 0 ,0)
keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP,0)
否则如果 os.dwPlatformId=VER_PLATFORM_WIN32s 或 os.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS 则 'Win3.1 或 win9x
MessageBox(hwin,"不支持这种方式开关NumLock","信息:",MB_OK)
如果结束
变量 key(0 至 255) 为 字节型 '定义数组作为缓冲区
GetKeyboardState( 转换类型(PBYTE,@key(0))) '获取键盘状态放入缓冲区
如果 key(VK_NUMLOCK) 与 1 =1 则 '参数pbKeyState为具有256个元素的字节数组的第一个项目。
MessageBox(hwin,"NumLock未打开","信息:",MB_OK)
否则
MessageBox(hwin,"NumLock打开","信息:",MB_OK)
如果结束
|