QT 录制鼠标键盘回放
前段时间因为朋友想要解放双手想要把一些操作录制回放 所以做了这个小项目
因为我目前运用的QT只能在程序中去记录鼠标跟键盘的操作 所以网上找了找方法 有钩子函数使用 所以运用了钩子函数
一、Hook
Window的钩子可以捕捉整个窗口的鼠标跟键盘
首先我们需要写一个安装钩子跟卸载钩子
定义一个钩子
安装钩子 WH_KEYBOARD_LL是键盘(大概) WH_MOUSE_LL是鼠标 详细的去找找SetWindowsHookExW函数了解一下即可
卸载钩子
这边只是贴了键盘的 鼠标的也大致相同 修改一下即可
不同的是回调函数的运用 SetWindowHooksExW的第二个参数是一个回调函数
回调函数里面的操作才是记载的关键
键盘钩子的回调函数
这边分别用一些bool记录一些状态
RecordState 是录制状态 录制状态下才会把键盘相关记录Push
RepeatState 是回放状态 回放状态下限定一下F12关闭回放
KeyState 跟 MouseState 是鼠标跟键盘的状态 这个无关紧要 只是当初做了一个禁止书包跟禁止键盘的按钮
处理也很简单 直接return 1即可 按下F12则取消鼠标键盘的禁用
然后下来的是鼠标的回调函数
一个MouseState记录是否禁用鼠标
一个RecordState 记录是否为录制状态 录制状态则Push
二、脚本回放的具体执行
首先是结构体 上面的push就是基于这个结构体Push的
分别是
Model 鼠标的模式 (移动 左右按下)
NowTimer 鼠标当前模式时候的一个时间
VCode 键盘的键位
dx 鼠标的X轴
dy 鼠标的Y轴
然后就是具体执行脚本
这边创建了一个线程 在线程里面执行脚本
把我们的结构体列表跟执行速度传入
然后就是线程当中的run函数
控制时间的方法一般使用Sleep去执行
然后用一个bool退出线程
根据鼠标跟键盘的不同用mouse_event 跟 keybd_event即可
三、GUI
每次写都想带上的我GUI 因为这个写的比较随意 但是看了之后可能比较了解上面一些功能的一些概念 -.-
Gui代码就不贴了 每个人写GUI的方式不同 这里随意即可-.-