模拟键盘输入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);

  

 

原文地址:https://www.cnblogs.com/devil-shadow/p/14006684.html