QT 录制鼠标键盘回放

news/2024/10/17 14:25:08/

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的方式不同 这里随意即可-.-
在这里插入图片描述


http://www.ppmy.cn/news/533375.html

相关文章

如何预防CC攻击 180.188.22.2

CC攻击是DDoS(分布式拒绝服务)的一种,相比其它的DDoS攻击CC似乎更有技术含量一些。这种攻击你见不到虚假IP,见不到特别大的异常流量,但造成服务器无法进行正常连接,一条ADSL的普通用户足以挂掉一台高性能的Web服务器 。 如何应对…

【备战秋招】每日一题:2023.3.15-阿里OD机试(第三题)-k次操作最小化极差

在线评测链接:P1084 题目内容 在一个遥远的王国里,有一座高耸入云的宝塔,据说里面藏有神秘的宝藏。但是,进入宝塔的道路异常困难,需要经过各种险阻,其中一个重要的关卡是“平衡之门”。 平衡之门是一条走廊&#xf…

Linux组管理和权限管理

一、Linux组 在linux中每个用户必须属于一个组,不能独立于组外,在linux中 文件所有者 一般为文件创建者,可以通过ls -ahl 查看文件所有者 chown 用户名 文件名 :修改文件所有者 groupadd 组名 创建组 当某个用户创建了一个文件…

【C++学习】C++入门 | 缺省参数 | 函数重载 | 探究C++为什么能够支持函数重载

写在前面: 上一篇文章我介绍了C该怎么学,什么是命名空间,以及C的输入输出, 这里是传送门:http://t.csdn.cn/Oi6V8 这篇文章我们继续来学习C的基础知识。 目录 写在前面: 1. 缺省参数 2. 函数重载 3…

HD90假钞辨真伪

网友现在是一股强大的力量。提醒大家看好手中的人民币哦

银行取票机

import array.SuperArray;public class queue {private SuperArray superArray new SuperArray();// 入队public void add(int data) {superArray.addToTail(data);}// 出队public int pop() {Integer select superArray.select(0);superArray.delete(0);return select;}publ…

人民币(纸币)检测

其实原理很简单,就是利用不同面额的纸币,其大小不一样来检测的(也可以根据纸币颜色的不同来识别,有兴趣的可以试试),这里二值化灰度图的阈值就是通过上篇的OSTU自适应阈值算法获得的阈值,效果非…

假硬币称重

解题思路: 因为题目的编辑中已经是知道了最终结果的,所以,可以倒过来思考,通过知晓的结果来判断相对应的过程是否符合对应的猜想,简单来说就是,自己称重硬币的过程,是不是就是出题者的意图&…