zoukankan      html  css  js  c++  java
  • 模拟键盘输入linux / windows

    1.linux 下无须管理员权限

    #include <X11/extensions/XTest.h>
    #include <X11/Xlib.h>
    #include <X11/keysymdef.h>
    
    
    int ClickSimulation::SimulationLeftArrow()
    {
      Display* disp = XOpenDisplay(NULL);
      if(disp == NULL)
      {
        return 0;
      }
                            //XK_Left
      XTestFakeKeyEvent(disp, XKeysymToKeycode(disp, 0xff51), True, CurrentTime);
      XTestFakeKeyEvent(disp, XKeysymToKeycode(disp, 0xff51), False, CurrentTime);
    
      XCloseDisplay(disp);
      return 1;
    }
    

    注意事项:
      1.0xff51 是向左的按键的码值,因为编译的时候不识别 XK_LEFT,故直接将码值写在这个地方。
      2.如果使用cmake编译,需在CMakeList.txt中添加

             LINK_LIBRARIES(X11)

             LINK_LIBRARIES(Xtst)

      3.如果使用qt编译,需要在.pro文件中添加    

        LIBS += -lX11
        -lXtst

      4.如果报 X11/extensions/XTest.h:没有那个文件或目录。缺少依赖,根据自己的操作系统来安装依赖。

    2.linux 下须要管理员权限

      这种方法有很多介绍。原理是通过向输入设备 /dev/uinput 或者 /dev/input/event1 设备写入数据来实现的。

    3.windows 

    #include <Windows.h>
    #icnlude <Winuser.h>

    //模拟capital键(大写键)按下松开 keybd_event(VK_CAPITAL, NULL, KEYEVENTF_EXTENDEDKEY | 0, NULL); keybd_event(VK_CAPITAL, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);

      

     

  • 相关阅读:
    luogu P3368 【模板】树状数组 2
    dp
    vijos 羽毛
    luogu tyvj 纪念品分组
    codevs 1259 最大正方形子矩阵 WD
    python 序列化之pickle模块 json模块
    python 类的进阶
    python 面向对象与类的基本知识
    python 异常处理
    python time模块 sys模块 collections模块 random模块 os模块 序列化 datetime模块
  • 原文地址:https://www.cnblogs.com/devil-shadow/p/14006684.html
Copyright © 2011-2022 走看看