当前位置:网站首页>YYS鼠标连点器
YYS鼠标连点器
2022-07-15 16:56:00 【Smile Hun】
调用鼠标的获取与模拟
#include<Windows.h>
void WINAPI mouse_event(
/*引用Windows库自带的函数,进行对模拟鼠标的操作*/
DWORD dwFlags,
DWORD dx,
DWORD dy,
DWORD dwData,
ULONG_PTR dwExtraInfo
);
GetCursorPos(&mouse1); // 获取鼠标位置
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); // 模拟鼠标左键按下
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); // 模拟鼠标左键抬起
时延函数的设置
#include<time.h>
srand(t); // 以时间为种子进行随机数的选取 P.S. 需要提前调用<time.h>
Sleep(rand() % 20); // 随机时延0-20ms
mouse_Row = rand() % mouseShift_Row + mouse1.x;; //在mouse1.x到mouse2.x之间随机确定一个横坐标
/*调用rand函数的表达式:rand()%偏移量 + 最小值;即在调用rand函数时,需要得到一个偏移范围,之后在最小值的基础上进行随机偏移。*/
程序的停止
#include <conio.h>
if (_kbhit() && _getch() == 0x1b) //当键盘读取到esc键时退出程序
return 0;
完整代码
#include <stdio.h>
#include<Windows.h>
#include<time.h>
#include <conio.h>
void WINAPI mouse_event(
/*引用Windows库自带的函数,进行对模拟鼠标的操作*/
DWORD dwFlags,
DWORD dx,
DWORD dy,
DWORD dwData,
ULONG_PTR dwExtraInfo
);
int main() {
POINT mouse1,mouse2, mouse3, mouse4; //用来储存鼠标的x y坐标 (本质是结构体) point 定义了一个2维坐标(x,y),也就是说point x=(1,2);是成立的
time_t t = time(NULL);
long STOP,i=0 ;
printf("请输入连点时长(单位:小时):");
scanf_s("%d" , &STOP);
STOP = STOP * 2400;
Sleep(2000);
printf("请将鼠标放在“挑战”图标的左边界,待显示鼠标位置后再移动到右边界,同理完成上边界、下边界的设定\n");
srand(t);
Sleep(2000);
GetCursorPos(&mouse1); //调用GetCursorPos函数获取图标左边界的坐标值
printf("鼠标左阈值(%d,%d)\n", mouse1.x, mouse1.y);
Sleep(2000); //时延2000ms 即,等两秒
GetCursorPos(&mouse2); //调用GetCursorPos函数获取图标右边界坐标值
printf("鼠标右阈值(%d,%d)\n", mouse2.x, mouse2.y);
Sleep(2000);
GetCursorPos(&mouse3); //调用GetCursorPos函数获取图标上边界坐标值
printf("鼠标丄阈值(%d,%d)\n", mouse3.x, mouse3.y);
Sleep(2000);
GetCursorPos(&mouse4); //调用GetCursorPos函数获取图标下边界坐标值
printf("鼠标下阈值(%d,%d)\n", mouse4.x, mouse4.y);
Sleep(2000);
int mouseShift_Row,mouseShift_Column,mouse_Row,mouse_Column;
mouseShift_Row = mouse2.x - mouse1.x; //设置虚拟鼠标横向偏移量
mouseShift_Column = mouse3.y - mouse4.y; //设置虚拟鼠标纵向偏移量
while (i<=STOP) {
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //模拟鼠标左键按下
Sleep(rand() % 20); //随机时延0-20ms
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //模拟鼠标左键放开
mouse_Row = rand() % mouseShift_Row + mouse1.x;; //在mouse1.x到mouse2.x之间随机确定一个横坐标
mouse_Column = rand() % mouseShift_Column + mouse4.y;;//在mouse3.y到mouse4.y之间随机确定一个纵坐标
SetCursorPos(mouse_Row, mouse_Column); //将确定的坐标设为鼠标位置,开启下一次循环
Sleep(rand() % 1500);
if (_kbhit() && _getch() == 0x1b)
return 0;
}
return 0;
}
代码的打包
- 将调试状态下的Debug改为Release

- 点击“项目”下拉菜单中的最后一项“属性”
.
- 在代码生成界面运行库选项中下拉选择多线程

- 最后选择重新生成解决方案,之后在项目的文件下下就能找到扩展名为.exe的可执行文件

缺点
必须在程序的执行页才按下esc才可以终止程序,无法在全局状态下监控键盘的动态。
边栏推荐
猜你喜欢

Chapter 6 functions of C language

Lifecycle:生命周期感知型组件的基础 —— Jetpack 系列(1)

抖音带火的这种无线领夹麦克风,央视主持人都在用

【DFT/FFT存在的问题---栅栏效应的解决手段】

Thumbnailator 图片处理类库

How Oracle escapes single quotation marks

Compileflow Taobao Workflow Engine

*链表逆转

MAZAK手轮维修马扎克小巨人数控机床手柄操作器维修AV-EAHS-382-1

H264 decoding sequence display sequence reference sequence
随机推荐
Rhcsa note 2
CCTV hosts are using this wireless Lavalier microphone with fire
typec显示器解决方案大全LDR6290单C口桌面式显示器解决方案
Type-c充电OTG芯片(LDR6028S)
MAZAK手轮维修马扎克小巨人数控机床手柄操作器维修AV-EAHS-382-1
Preliminary introduction of CAN protocol
A rate distortion optimization of h264 encoder (1)
Ten optimization rules of Clickhouse SQL
初学者怎么快速学会SQL
[problems of dft/fft - solutions to fence effect]
Mysql高版本报sql_mode=only_full_group_by异常
Implementation of sequence table in C language stack
How to save using OpenCV Mp4 format file
在数组中指定位置插入任意一个元素及删除数组中值为x的元素
[cloud native] 3.4 ruoyi cloud deployment practice (Part 1)
Resnet50 structure diagram
Chapter 7 preprocessing of C language
About some string related functions, memory functions and some simulations
PHP 如何把二维数组变为 一维数组
Basic usage of flask