keybd_event 在F按键系列不起作用的解决办法
2024-09-01 20:54:37
最近给公司做自动化测试工具,主要用到的功能是模拟鼠标键盘录制回放。一切都很完美了,但在客户大机系统上使用的时候,发现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指令
}
最新文章
- WinCE下读取注册表获得SD路径
- WPF Navigation
- C++静态成员函数小结(转)
- 捉BUG记(To Catch a Bug)
- ECSHOP报错误Deprecated: preg_replace(): The /e modifier is depr
- php中curl、fsockopen的应用
- Archlinux 安装配置指导 2015-05-24
- boost::thread之while(true)型线程终结方法
- 基于.net开发chrome核心浏览器【三】
- java注解(一)
- KoaHub平台基于Node.js开发的Koa的模板系统handlebars插件代码详情
- WiFi天线分集
- drools kie-server和kie-workbench安装手册
- Spring跟mybatis结合
- 【Espruino】NO.07 获取电压值
- SQL Server查询已锁的表及解锁
- thinkphp session设置
- 解决在cmder中bash(WSL)上下箭头不能使用问题
- JAX-WS 注解
- 提高开发效率 ->; 图片
热门文章
- 厌倦了excel绘制地图的繁琐操作,来看看这款可视化地图神器!
- spyeye手机监控最新版分享下载不用碰对方手机,所有聊天内容,照片等都能看见
- EasyUI Datagrid 数据网格
- 解构函数(Deconstruct)
- 【windows 访问控制】六、安全标识符(SID Security Identifiers)
- 2020ICPC南京 M.Monster Hunter
- DatePicker去掉头布局的两种方法
- Python:Scrapy(四) 命令行相关
- Redis-基本概念、java操作redis、springboot整合redis,分布式缓存,分布式session管理等
- Python 基于 selenium 实现不同商城的商品价格差异分析系统