最近给公司做自动化测试工具,主要用到的功能是模拟鼠标键盘录制回放。一切都很完美了,但在客户大机系统上使用的时候,发现F1-F24系列按键无法正确使用,查了很多资料,主要有2个方面的原因:

1、一些游戏公司他们的程序使用winio绕过了windows系统的保护机制,因此keybd_event对此类软件无效果。

2、因为各个硬件厂家(键盘、鼠标)在指定scancode(扫描码)的时候,会有所不同。keybd_event在发送指令的时候,无法对应到指定的硬件扫描码,导致发送信息发送失败。

此次,我的这个问题属于第二种。解决措施就是通过虚拟码,得到扫描码。

     
[DllImport("user32.dll")]
static extern void keybd_event(byte key, byte scan, int flags, int extraInfo); [DllImport("user32.dll")]
static extern int MapVirtualKey(uint uCode, uint uMapType);


public static void KeyDown(Keys key)
{
int scanCode = MapVirtualKey(ParseKey(key), 0); //虚拟码转换扫描码
keybd_event(ParseKey(key), (byte)scanCode, 0, 0);  //发送键盘keydown指令
}

最新文章

  1. WinCE下读取注册表获得SD路径
  2. WPF Navigation
  3. C++静态成员函数小结(转)
  4. 捉BUG记(To Catch a Bug)
  5. ECSHOP报错误Deprecated: preg_replace(): The /e modifier is depr
  6. php中curl、fsockopen的应用
  7. Archlinux 安装配置指导 2015-05-24
  8. boost::thread之while(true)型线程终结方法
  9. 基于.net开发chrome核心浏览器【三】
  10. java注解(一)
  11. KoaHub平台基于Node.js开发的Koa的模板系统handlebars插件代码详情
  12. WiFi天线分集
  13. drools kie-server和kie-workbench安装手册
  14. Spring跟mybatis结合
  15. 【Espruino】NO.07 获取电压值
  16. SQL Server查询已锁的表及解锁
  17. thinkphp session设置
  18. 解决在cmder中bash(WSL)上下箭头不能使用问题
  19. JAX-WS 注解
  20. 提高开发效率 -> 图片

热门文章

  1. 厌倦了excel绘制地图的繁琐操作,来看看这款可视化地图神器!
  2. spyeye手机监控最新版分享下载不用碰对方手机,所有聊天内容,照片等都能看见
  3. EasyUI Datagrid 数据网格
  4. 解构函数(Deconstruct)
  5. 【windows 访问控制】六、安全标识符(SID Security Identifiers)
  6. 2020ICPC南京 M.Monster Hunter
  7. DatePicker去掉头布局的两种方法
  8. Python:Scrapy(四) 命令行相关
  9. Redis-基本概念、java操作redis、springboot整合redis,分布式缓存,分布式session管理等
  10. Python 基于 selenium 实现不同商城的商品价格差异分析系统