云外归鸟工作室网站

标题: 模拟键盘按键 [打印本页]

作者: 云外归鸟    时间: 2010-10-7 20:19
标题: 模拟键盘按键
原作者: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)         
   如果结束
[attach]82[/attach]





欢迎光临 云外归鸟工作室网站 (http://www.ywgn.net/) Powered by Discuz! X3