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);