zoukankan      html  css  js  c++  java
  • keybd_event 在F按键系列不起作用的解决办法

    最近给公司做自动化测试工具,主要用到的功能是模拟鼠标键盘录制回放。一切都很完美了,但在客户大机系统上使用的时候,发现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指令 }
  • 相关阅读:
    java工程中的相关路径
    cxf 消息寻址
    cxf数据压缩
    cxf开发Restful Web Services
    cxf构建webservice的两种方式
    使用cxf构建webservice
    thumbnailator图片处理
    WinFom中经典小游戏(含源码)
    WinForm中使用DDE技术(含源码)
    EntityFrameWork连接多Db配置
  • 原文地址:https://www.cnblogs.com/pecool/p/12009643.html
Copyright © 2011-2022 走看看