C++自制鼠标连点器

目录

  • 文章目录如下:(以文章为准,可能未更新)
一、什么是鼠标连点器
二、源码分享网盘压缩包
三、代码解析函数模块解析主函数解析
四、附录  参考

一、什么是鼠标连点器

  • 介绍

    • 就是代替你的手在电脑上点来点去的!
  • 用处
    • 爱打游戏吗?专治刷时长,让它自己帮你点击!睡一觉就满级了!
    • 送礼物的时候,是不是要点来点去的?让它帮你点,一送就是几百几千个礼物!
  • 这么说,你应该觉得有用了吧!

二、源码分享

网盘

  • (原版)链接:https://pan.baidu.com/s/1NuXG7bwr7D6EReujI5ex3w
    提取码:6bgf
  • (新版)链接: https://pan.baidu.com/s/1xGl-OigoAQRK4hf7RMsLtw
    提取码:oqi9

源码

  • 为了下面讲解方便,我也将源码贴在这里!
#include <cstdio>
#include <conio.h>
#include <ctime>
#include <windows.h>
#include <vector>
#include <string>
void set_cursor(bool hide) { // 隐藏/显示 光标HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO CursorInfo;GetConsoleCursorInfo(handle, &CursorInfo); // 获取控制台光标信息CursorInfo.bVisible = hide;                // 隐藏控制台光标SetConsoleCursorInfo(handle, &CursorInfo); // 设置控制台光标状态
}
void gotoxy(int x, int y) { // 设置光标COORD c = {(SHORT)x, (SHORT)y};SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void setmode() {HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);DWORD mode;GetConsoleMode(hStdin, &mode);mode &= ~ENABLE_QUICK_EDIT_MODE; // 移除快速编辑模式// mode &= ~ENABLE_INSERT_MODE;   // 移除插入模式// mode &= ~ENABLE_MOUSE_INPUT;SetConsoleMode(hStdin, mode);
}
struct Click {int x, y;int delay;int button_down, button_up;std::string msg;
};
int main() {setmode();std::printf("欢迎使用鼠标连点器!nn");
_ReStart_: // 重新开始的地方std::system("mode con cols=40 lines=15");set_cursor(true);SetWindowPos(GetConsoleWindow(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); // 窗口置顶std::puts("请选择模式:");std::puts("  1. 点击位置为鼠标指针,鼠标左/右键点击");std::puts("  2. 点击位置固定循环,鼠标左/右键点击");std::puts("  0. 退出");int ch = _getch();while(ch < '0' || ch > '2') ch = _getch();std::system("cls");set_cursor(false);if(ch == '1') {set_cursor(true);std::puts("配置:");std::printf("请输入每秒钟的点击次数(1—1000):");int spd;std::scanf("%d", &spd);std::printf("n请选择点击的键(0左键,1右键):");ch = _getch();while(ch < '0' || ch > '1') ch = _getch();int CLICK_BUTTON_DOWN = (ch == '0' ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_RIGHTDOWN);int CLICK_BUTTON_UP = (ch == '0' ? MOUSEEVENTF_LEFTUP : MOUSEEVENTF_RIGHTUP);std::system("cls");int cont = true, lst_tim = clock();set_cursor(false);while(true) {gotoxy(0, 0);std::printf("连点器%s. . . nn", cont ? "运行中" : "已暂停");std::printf("速度:%d次/秒n", spd);std::printf("  空格键t%sn", cont ? "暂停" : "继续");std::printf("  Esc键 t退出n");SetWindowPos(GetConsoleWindow(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); // 窗口置顶if(_kbhit()) {int ch = _getch();if(ch == 27) { // Escbreak;} else if(ch == ' ') { // 空格cont = !cont;}} else {if(cont) {if(clock() - lst_tim >= 1.0 / spd * CLOCKS_PER_SEC) {lst_tim = clock();POINT pt;GetCursorPos(&pt);mouse_event(CLICK_BUTTON_DOWN, 0, 0, 0, 0);mouse_event(CLICK_BUTTON_UP, 0, 0, 0, 0);}}}}} else if(ch == '2') {std::printf("请输入您要点击的位置个数:");int times;std::scanf("%d", &times);std::vector<Click> ps;set_cursor(true);for(int i = 1; i <= times; i++) {std::system("cls");std::printf("将鼠标移动到第%d个位置上后按下空格:", i);while(_getch() != ' ') {}POINT p;GetCursorPos(&p);ps.push_back({p.x, p.y, 0, 0, 0, ""});std::printf("n需要按下的键(0左键,1右键):");char ch = _getch();while(ch < '0' || ch > '1') ch = _getch();ps.back().button_down = (ch == '0' ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_RIGHTDOWN);ps.back().button_up = (ch == '0' ? MOUSEEVENTF_LEFTUP : MOUSEEVENTF_RIGHTUP);std::printf("n在上一次点击后需要等待多少毫秒:");int delay;std::scanf("%d", &delay);ps.back().delay = delay;std::printf("n附加描述(可不填):");char msg[10000];gets(msg);gets(msg);ps.back().msg = msg;}int cont = true;int now = 0;int lst_tim = clock();std::system("cls");set_cursor(false);while(true) {gotoxy(0, 0);std::printf("连点器%s. . . nn", cont ? "运行中" : "已暂停");std::printf("当前位置描述:%sn", ps[now].msg.c_str());std::printf("需要等待:%d秒n", ps[now].delay);std::printf("点击按键:%s键n", (ps[now].button_down == MOUSEEVENTF_LEFTDOWN ? "左" : "右"));std::printf("  空格键t%sn", cont ? "暂停" : "继续");std::printf("  Esc键 t退出n");SetWindowPos(GetConsoleWindow(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); // 窗口置顶if(_kbhit()) {int ch = _getch();if(ch == 27) { // Escbreak;} else if(ch == ' ') { // 空格cont = !cont;}} else {if(cont) {if(clock() - lst_tim > ps[now].delay) {lst_tim = clock();POINT pt;GetCursorPos(&pt);SetCursorPos(ps[now].x, ps[now].y);mouse_event(ps[now].button_down, 0, 0, 0, 0);mouse_event(ps[now].button_up, 0, 0, 0, 0);SetCursorPos(pt.x, pt.y);if(now + 1 == (int)ps.size()) now = 0;elsenow = now + 1;}}}}} elsereturn 0;std::system("cls");std::printf("欢迎回来!nn");goto _ReStart_;return 0;
}

三、代码解析

函数模块解析

  • 未完续,敬请期待

主函数解析

  • 未完续,敬请期待

四、附录

参考

  • https://www.jianshu.com/p/638b20ac5c4c

鼠标连点器同时点多个位置_C++自制鼠标连点器相关推荐

  1. 鼠标连点器同时点多个位置_MAC上最强鼠标——Magic Mouse2使用指南

    网上很多评测都不看好magic mouse2,但事实上,如果有正确的使用方法,加上合适的触发设置,如果你本身也习惯macOS系统的话,它就很有可能是你所使用过的最强鼠标. 为什么需要magic mou ...

  2. 鼠标连点器同时点多个位置_一台电脑登录多个微信,简单,按住ENTER,鼠标快速点,扫描OK...

    今天继续分享 同一台电脑如何登陆多个微信! 1.右击您的微信图标,把目标位置进行复制,然后打开,从公众号下载的这个文件(自己在记事本敲打出来也可以的,或者复制下边这段代码,保存为duokai.dat文 ...

  3. [转]在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录...

    [转]在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录 http://www.cnblogs.com/skywind/archive/2009/05/22/14 ...

  4. vue+element制作音乐播放器播放进度条bug(鼠标拖拽slider滑块滑动到指定位置无效)

    最开始bug还没解决时的效果图 bug解决后的效果图 项目场景: 想自己做一个基于vue仿网易云音乐的音乐网站,在制作播放器的时候用到了element ui里面的slider组件,制作完成后发现使用c ...

  5. java写键盘鼠标录制器,易语言仿按键精灵录制键盘鼠标操作的代码

    DLL命令表 .版本 2 .DLL命令 取按键状态, 短整数型, "user32.dll", "GetAsyncKeyState" .参数 鼠标键, 整数型 . ...

  6. 查看器_三款完美替代Windows10自带照片查看器的神器!

    Windows10系统中的看图软件Microsoft 照片,被吐槽已经不是一天两天了,2020年马上过完了,我在使用照片功能查看图片时还会出现假死问题. 如果少点bug,说实话Microsoft 照片 ...

  7. excel切片器_excel中的超级好用的筛选神器——切片器

    对于excel中的切片器,很多朋友多多少少了解一些,但是日常工作中仍然习惯用筛选功能,很少用到切片器,那么就看下这篇文章的切片器功能介绍,小编带你认识不一样的筛选神器. 一.创建智能表. excel中 ...

  8. pygame判断鼠标左键_美商海盗船DarkCoreRGB Pro SE无线电竞鼠标评测

    前言 经常使用无线鼠标的游戏玩家多少都经历过这样的苦恼,当你在游戏里激战正酣之时,忽然鼠标没电了.翻箱倒柜去找数据线或者备用鼠标也许只需要一两分钟,但这足以使之前积攒的大波优势付诸东流.所以我总是在想 ...

  9. JavaScript + Audio API自制简易音乐播放器(详细完整版、小白都能看懂)

    JavaScript + Audio API自制简易音乐播放器(详细完整版) ** 音乐播放器的功能清单如下: ** 1.点击暂停按钮,歌曲暂停 2.点击播放按钮,歌曲播放 3.单曲循环与取消单曲循环 ...

  10. 什么击计算机窗口可以打开资源管理器,在win7中双击打开计算机和右击打开资源管理器有什么区别...

    资源管理器是大家熟悉和常用的Windows文件查看和管理工具,和之前的Windows版本相比,Win7的资源管理器提供了更加丰富和方便的功能.不过今天我们想要重点关注的不是Win7资源管理器的功能,而 ...

最新文章

  1. 软测培训机构哪个比较好
  2. 关于bcg库记忆界面的问题及其解决办法
  3. 区域显示触发_天涯明月刀手游五行藏珍天机奇遇怎么触发?五行藏珍天机奇遇攻略...
  4. 【测试】RPA产品初体验
  5. Java序列化简单例子
  6. Kong 1.3发布,原生gRPC代理、上游TLS交叉认证
  7. [react] componentWillUpdate可以直接修改state的值吗
  8. %@include%和jsp:include的区别
  9. Netty入门笔记-I/O多路复用技术
  10. Openbiz 推进PHP进入大App Store时代
  11. java基础:13.2 集合框架 - LinkedList、Queue
  12. Alamofire源码解读系列(七)之网络监控(NetworkReachabilityManager)
  13. tomcat下部署activemq(转)
  14. python坦克大战小游戏,打包为exe文件
  15. python词云图生成简单实用
  16. Agilent E3649A via RS232 to PC 通信终于知道错哪了
  17. 身份证阅读器(读卡器)谷歌Chrome和火狐Firefox浏览器端网页开发接口控件分享
  18. 云锁安装Linux服务器云锁安装说明
  19. 金融IC卡非接触式快速支付的先天缺陷与补救措施
  20. Excel_软件介绍

热门文章

  1. html编写在线打字通,HTML5代码打字练习、HTML5案例 - 02
  2. Linux网络配置(NAT模式)
  3. Pyinstaller 打包Pyside2 报错qt.qpa.plugin
  4. 制作PPT如何快速绘制透视立体图
  5. 开源界的视频会议系统-FreeSWITCH
  6. 阵列卡直通模式和raid模式_服务器通过RAID也可以在线扩容?学会这些,你也可以...
  7. 一篇文章看懂自然语言处理——word表示技术的变迁(从bool模型到BERT)
  8. 010editor的破解
  9. 一、用于数据分析的Excel技巧
  10. 高等数学张宇18讲 第十七讲 三重积分、第一型曲线曲面积分