【C++】一个简单的模拟实现鼠标脚本精灵 您所在的位置:网站首页 如何自己制作鼠标宏脚本软件 【C++】一个简单的模拟实现鼠标脚本精灵

【C++】一个简单的模拟实现鼠标脚本精灵

2024-07-05 06:11| 来源: 网络整理| 查看: 265

主要实现了C++里的GetAsynckeyState(VK_NAME)方法来监控鼠标的操作状态,然后利用GetCursorPos(LPPOINT lp)来获取鼠标位置,最后读取录制的操作数据,进行操作重放; 下载链接:https://download.csdn.net/download/qq_42799236/12562298

使用说明

工具的使用比较简单粗暴,第一次运行请先打开如图(鼠标脚本1.0.exe)文件,会出现下图模式选择界面代表运行成功,如果报错请先运行资源里的(环境配置.bat)文件; 在这里插入图片描述 第二步先进行鼠标操作的录制,输入1按回车确认,即选择模式1.录制脚本: 在这里插入图片描述 出现上图则意味着工具已经开始记录你的鼠标操作并存储,目前暂不支持模拟鼠标拖拽和鼠标右键活动,其它单击或双击操作将被记录: 在这里插入图片描述 如图,当你确定自己鼠标操作结束后,按键盘左上角的ESC键结束录制,工具将统计你的操作数和用时; 录制好了你所需要的操作,下面关闭工具重新打开,并输入2按回车选择执行刚刚录制的脚本; 下一步便是要确认一下你想要执行多少次刚刚的操作,以及每次执行完休息多久,单位为秒,按回车确认: 在这里插入图片描述 注意事项: ①重新录制脚本将覆盖先前录制的脚本,如果要进行备份,请将bin目录里的data.dat文件备份在其它文件夹里,重新录制脚本将生成新的data.dat文件,如果要执行任意备份脚本,只要把它的data.dat文件放回bin目录里; ②工具里的文件夹或者文件都是必要的,大小并不大,如果删除将导致工具运行失败;

C++源码 #include #include #include #include #define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) using namespace std; typedef struct act{//定义存储鼠标操作信息的结构体对象; long x; long y; long t; }action; action aa [500]; //定义操作数组; int count = 0; //操作计数; int k=1; //循环计数 float cost = 0.0;//脚本总耗时 int delay=3 ; //接收脚本延时 int num = 0; //接收脚本次数 void store(){//定义存储操作的方法; POINT ptB = {0,0}; //获取鼠标坐标; LPPOINT xy = &ptB; GetCursorPos(xy); long x = xy->x; long y = xy->y; SYSTEMTIME sys;//获取当日经过毫秒数; GetLocalTime(&sys); long h = sys.wHour*60*60*1000; long m = sys.wMinute*60*1000; long s = sys.wSecond*1000; long ms = sys.wMilliseconds; long t =0; t = h+m+s+ms; struct act temp;//创建操作对象; temp.x=x; //存储鼠标坐标,当日用时; temp.y=y; temp.t=t; if(count == 0){ aa[count] = temp; printf("x=%d,y=%d,t=%d,count=%d 第一次操作存入成功!\n",aa[count].x,aa[count].y,aa[count].t,count); count++; } if((temp.x==aa[count-1].x)&&(temp.t-aa[count-1].t aa[count] = temp; printf("x=%d,y=%d,t=%d,count=%d 操作存入成功!\n",aa[count].x,aa[count].y,aa[count].t,count); count++;//记录最后一次操作时也进行了count++,所以总操作数为count; } } void out(){//定义数据输出文件方法 ofstream outfile; outfile.open("data.dat",ios::trunc); int i ; outfile cout infile >> aa[i].x; infile >> aa[i].y; infile >> aa[i].t; } //将每个结构体的t存放休眠时间; for(i = 0;i aa[i].t=0; }else{ aa[i].t=aa[i+1].t-aa[i].t; cost = cost+aa[i].t; } } infile.close(); } int fun_1(){//录制操作 while (true){//循环监控鼠标按键情况 if(KEY_DOWN(VK_LBUTTON)){ //调用存储方法将本次操作进行存档; store(); } if(KEY_DOWN(VK_ESCAPE)){ //调用输出方法进行全部操作存为文件; out(); cout SetCursorPos(aa[i].x,aa[i].y); mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,0,0,0,0); printf("执行第%d步完毕!\n",i+1); Sleep(aa[i].t); if(KEY_DOWN(VK_ESCAPE)){ cost=cost*(k-1)+delay*(k-1); while(i!=-1){ cost=cost+aa[i].t; i--; } cout case '1':{ system("cls"); cout fun_2(); if(k==0||k==num) break; printf("第%d次循环执行完毕,%d秒后进入下一循环!(提前结束请长按ESC或关闭本窗口)\n",k,delay); k++; Sleep(1000*delay); } if(num!=0&&k==num){ cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有