登录 注册 找回密码 开启辅助访问 商业用户中心 购物车有0件商品 切换到宽版
搜索
查看: 2174|回复: 0
打印 上一主题 下一主题

[源码] 模拟键盘按键

[复制链接]
跳转到指定楼层
楼主
发表于 2010-10-7 20:19:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原作者: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)         
   如果结束

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表