c++实现连点器

这篇具有很好参考价值的文章主要介绍了c++实现连点器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本期为大家收集了四个用c++实现连点器的程序(非常好用)

首先是@LiJoQiao提供的第一个版本,能实现连点鼠标左键

#include<cstdio>  
#include<windows.h>    
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)   
#define click mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0)
long long N=10000000;
void tj()
{
	system("cls");
	printf("输入速度(win10建议10000000,win7建议1500000;v=10000000时,CPS=60左右):");
	scanf("%lld ",&N); 
	system("cls");
}
void work()
{
	int now=0,k=0;
	bool flag=1; 
	while(1)
	{    
		if(now==1)click;
		if(KEY_DOWN('1')&&flag)now=1;   
	    if(KEY_DOWN('2')&&flag)now=0;    
		if(KEY_DOWN('3')){flag=0;now=0;}
		if(KEY_DOWN('4')){now=0;flag=1;}
		if(KEY_DOWN('5'))tj();
        for(long long i=1;i<=N;++i)k=i+1;  
    }    
}
int main()
{ 
    printf("按1点击左键,按2停止,按3锁定,按4解锁,按5调速\n");  
    work(); 
    return 0;  
}

然后是@Zimse提供的第二个版本,在第一个版本的使用体验上有所升级

#include <iostream>
#include <cstdio>
#include <windows.h>
#include <ctime>
#include <cstdlib> 

using namespace std;

const char Edition[100]="Zimse Auto Click System23 1.3.04";
int cps=50,up,down; 

int main(){
	HWND hwndDOS=GetForegroundWindow();
	ShowWindow(hwndDOS,SW_HIDE);
	MoveWindow(hwndDOS,150,150,400,300,true);
	
	MessageBox(NULL,"\n\t按左箭头查看帮助",Edition,MB_OK);
    srand(time(0));
    
    while(1){
    	if(GetAsyncKeyState(VK_UP)){
    		while(1){
				/*if(GetAsyncKeyState(VK_UP)){
    				++up;
    				if(up>20&&cps<900)++cps,up=0;
				}
				
				if(GetAsyncKeyState(VK_DOWN)){
    				++down;
    				if(down>20&&cps>10)--cps,down=0;
				}*/ 
    			mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,0,0,0,0);
    			if(GetAsyncKeyState(VK_DOWN))break;
    			
    			Sleep(1000/cps);
			}
		}
		
		if(GetAsyncKeyState(VK_LEFT)){
    		ShowWindow(hwndDOS,SW_RESTORE);
    		system("cls");
    		printf("\n\t基本操作:上箭头开始,下箭头停止\n\n\t右箭头退出,左箭头查看帮助\n\n\t请输入新的cps:"); 
    		scanf("%d",&cps);
    		ShowWindow(hwndDOS,SW_HIDE);
		}
		
		if(GetAsyncKeyState(VK_RIGHT))break;
	}
	
	MessageBox(NULL,"\n\t成功退出",Edition,MB_OK);
    return 0;
}

然后是@Coders提供的支持鼠标右键的版本

#include <cstdio>
#include <conio.h>
#include <ctime>
#include <windows.h>
#include <vector>
#include <string>
using namespace std; 
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("欢迎使用鼠标连点器!\n\n");
_ReStart_: // 重新开始的地方
	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();
	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);
		system("cls");
		int cont = true, lst_tim = clock();
		set_cursor(false);
		while(true) {
			gotoxy(0, 0);
			std::printf("连点器%s. . . \n\n", cont ? "运行中" : "已暂停");
			std::printf("速度:%d次/秒\n", spd);
			std::printf("  空格键\t%s\n", 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) { // Esc
					break;
				} 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++) {
			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();
		system("cls");
		set_cursor(false);
		while(true) {
			gotoxy(0, 0);
			std::printf("连点器%s. . . \n\n", cont ? "运行中" : "已暂停");
			std::printf("当前位置描述:%s\n", 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%s\n", 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) { // Esc
					break;
				} 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;
						else
							now = now + 1;
					}
				}
			}
		}
	} else
		return 0;
	system("cls");
	std::printf("欢迎回来!\n\n");
	goto _ReStart_;
	return 0;
}

 最后是@incra提供的支持按键的连点器

#include<bits/stdc++.h>
#include<cstdio>
#include<windows.h>
#include<conio.h>
using namespace std;

double times,a=1000;
char key;
int main(){
    printf("请输入准备按下的按键(字母或数字):");
    scanf("%c",&key);
    if(int(key)>='a'&&int(key)<='z')
        key-=32; 
    printf("请输入需求CPS(建议不超过50):");
    scanf("%lf",&times);
    printf("按%c开始连点\n",key);
    double time=a/(times+0.1*times);
    while(true)
    {
        if(GetAsyncKeyState(key))
        {
            mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,0,0,0,0);
            Sleep(time);
        }
    }
    return 0;
}

那今天就到这了,感谢四位大佬,如果有更好的意见欢迎联系小编文章来源地址https://www.toymoban.com/news/detail-828734.html

完结撒花!!!

到了这里,关于c++实现连点器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python︱使用python制作简易连点器

    当我们使用电脑的时候,不可避免的会碰到重复点击的任务。所以我们可以使用python制作一个简单的连点器进行使用,同时可以提升写代码的水平。 目录 第一步:前期准备 你需要一个可以编辑并运行python代码的程序 下载第三方库  第二步:整体思路 第三步:编写代码 1.导

    2024年02月14日
    浏览(31)
  • 鼠标连点器,怎么玩转鼠标自动点击?

    鼠标连点器是一款非常便捷的工具,可以帮助我们自动进行鼠标点击操作。这种工具尤其适用于一些需要反复点击同一个位置的软件或游戏,在这些情况下手动点击会非常费时费力,而鼠标连点器就能够为我们节省很多宝贵的时间。但是,对于没有使用过鼠标连点器的人来说

    2024年02月09日
    浏览(45)
  • 万能自动点击器连点器,连击器的作用解析

    而在互联网时代,在用户需要进行频繁操作、特别是重复性操作的情况下万能自动点击器连点器应运而生。本文将探讨这些工具如何帮助我们实现计算机自动化操作,万能自动点击器连点器有什么作用?   一.万能自动点击器连点器定义 万能自动点击器连点器是用于计算机简

    2024年02月08日
    浏览(32)
  • 鼠标连点器(VB.net 全局键盘钩子+模拟鼠标 左键、右键)

    相信大家在玩游戏的时候会把 “攻击” 设置为鼠标左键,但是自己手速不够快,被人家秒了 废话不多说,立马进入主题: 一、新建一个vb.net工程(窗体应用程序) 大概是这样,timer1控制鼠标左键,timer2控制鼠标右键 二、新建一个模块(Module1.vb) 写入:注意,本模块由C

    2024年02月09日
    浏览(48)
  • [开发语言][C++]:递增递减运算符

    递增运算符和递减运算符为对象的+1和-1提供了简洁的书写形式。 自增自减运算符的应用: 这两个运算符除了应用在算术运算,还可应用于迭代器,因为很多迭代器并不支持算术运算。 递增和递减运算符有两种书写形式:前置版本和后置版本。 前置版本 ++i --i :首先将运算

    2024年01月25日
    浏览(38)
  • 【VisualStudio】使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月10日
    浏览(63)
  • [开发语言][c++]:Static关键字和全局变量

    写在前面: 如果您只是想回顾或了解一下static和全局变量的异同点,那么下面的总结将满足您的需求。 如果您是一位初学者或对二者的使用模棱两可,建议您读完该篇文章,相信这一篇将解答完您对于static以及全局变量的所有疑惑。 如有问题或建议欢迎评论 or 私信

    2024年01月20日
    浏览(43)
  • 第七十七篇:车辆安全-车载软件C++语言开发指南(AUTOSAR C++)

    C++是面向对象的编程,比C语言更加复杂,抽象程度高,但C++在一些图像处理、系统、控件的编程方面,实用性更强,具有自己的编程优势。在车载嵌入式系统的开发中,C和C++都具有重要的作用。C++语言所使用的面向对象的编程技术如封装、继承和多态性极大的提高了在大规

    2024年02月04日
    浏览(49)
  • [开发语言][c++][python]:C++与Python中的赋值、浅拷贝与深拷贝

    写在前面 :Python和C++中的赋值与深浅拷贝,由于其各自语言特性的问题,在概念和实现上稍微有点差异,本文将这C++和Python中的拷贝与赋值放到一起,希望通过对比学习两语言实现上的异同点,加深对概念的理解。 C++中所谓的 浅拷贝 就是由(系统默认的) 拷贝构造函数对

    2024年02月02日
    浏览(38)
  • [开发语言][python][c++]:C++中的this指针和Python中的Self -- 26岁生日

    以朋友的新岁祝福开篇,祝笔者也祝大家☺️: 之前一直对 C++ 中的 this 和 python 中的 self 到底是什么关系,为什么 C++ 要显式的写出来,python 则不需要? 模糊不清,趁着周末整理一下相关结论,希望本篇文章可以解答这些问题,同时对C++和Python中的类加深些理解。 python 当

    2024年01月24日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包