当前位置:   article > 正文

C++ 令鼠标点击&&连点器的原理讲解_c++如何控制鼠标一直点击

c++如何控制鼠标一直点击

置顶:最新连点器更好了

源代码

可执行文件

如果编译乱码,敬请参阅Embarcadero Dev-C++ 中文字符的处理

此处敬告:以上连点器是偏游戏性的,本文的讲解也是偏游戏性的,请谨慎阅读。


Minecraft \texttt{Minecraft} Minecraft各大服务器中,你是否苦恼于手速太慢,打不过?

看到这篇文章,那就是你的福利。使用 C + + \rm C++ C++,编写一个独特的连点器,震惊所有人!


前置知识:

I . \rm{I.} I. Sleep()函数

要理解这个函数,其实也不难。Sleep(x)的作用是让程序休眠 x x x 毫秒,在那期间,程序什么都不会干。很简单。

I I . \rm{II.} II.mouse_event

顾名思义,mouse_event的作用是执行一次鼠标的事件。关于鼠标事件,有两个最常用的:

mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,0,0,0,0);

让鼠标左键点击一次;

mouse_event(MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP,0,0,0,0);

让鼠标右键点击一次。

I I I . \rm{III.} III.GetAsyncKeyState(key)

key是键盘上面的一个键,可以是大写字母或数字。如果你点击了这个键,GetAsyncKeyState(key)就会返回true;否则返回false

I V . \rm{IV.} IV. 改变文字颜色


现在来说主体。

前置知识说完了,写出一份优秀的代码应该不成什么问题:

这是一份可以点击鼠标左键或右键的代码,还可以控制频率。

#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
void SetColorAndBackground(int ForgC, int BackC) {
	WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
int main(){
	SetColorAndBackground(11,9);
	printf("---------C++ Quick Click---------\n\n\n\n\n");
	SetColorAndBackground(4,0);
	char key;
	int CPS;
	string s="The notes you must know before use:\n1.Never let the CPS more than 100 or your computer will crash.\n2.If you use this for Minecraft service,don't let the CPS more than 13.Or you may be kicked out!";
	for(int i=0;i<s.size();++i){
		cout<<s[i];
		Sleep(75);
	}
	SetColorAndBackground(15,0);
	printf("\n");
	printf("Input the CPS you need:");
	scanf("%d",&CPS);
	LOOP:printf("\nDo you want to click left of right?\nIf you want to click left button,input 1;\nIf yoou want to click right button,input 2.\n");
	int op;
	scanf("%d",&op);
	if(op==1){
		printf("What key do you want to press to take left button's place?");
		cin>>key;
		if(key>='a'&&key<='z'){
			key-=32;
		}
		cout<<"Press "<<key<<" to start quick click";
		double time=CPS;
		double t=1000/time;
		while(true){
			if(GetAsyncKeyState(key)){
      	      	mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,0,0,0,0);
      	      	Sleep(t);
      		}
		}
	}
	else if(op==2){
		printf("What key do you want to press to take right button's place?");
		cin>>key;
		if(key>='a'&&key<='z'){
			key-=32;
		}
		cout<<"Press "<<key<<" to start quick click";
		double time=CPS;
		double t=1000/time;
		while(true){
			if(GetAsyncKeyState(key)){
      	      	mouse_event(MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP,0,0,0,0);
      	      	Sleep(t);
      		}
		}
	}
	else{
		printf("Invalid input!\n");
		goto LOOP;
	}
	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

这份代码的缺点是点击过于规律,容易被发现。

这是一份点击不规律的代码,还可以根据点击频率更改字体颜色:

#include<bits/stdc++.h>
#include<conio.h>
#include<windows.h>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
void SetColorAndBackground(int ForgC, int BackC) {
	WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
int main(){
	srand(time(0));
	char key='R';
	printf("Press R to start Quick Click\nNow CPS:");
	while(true){
		int t=rand()%100;
		if(t<=50){
			t+=50;
		}
		double tt=t;
		double cpsCCPS=1000.0/tt;
		
		if(GetAsyncKeyState(key)){
      	    mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,0,0,0,0);
      	    Sleep(t);
      	    if(cpsCCPS<=12.00){
      	    	SetColorAndBackground(12,0);
			}
			else if(cpsCCPS<=14.00){
				SetColorAndBackground(14,0);
			}
			else if(cpsCCPS<=17.00){
				SetColorAndBackground(10,0);
			}
			else{
				SetColorAndBackground(9,0);
			}
      	    printf("%.5f",cpsCCPS);
      	    printf("\b\b\b\b\b\b\b\b");
      	    SetColorAndBackground(7,0);
      	}
	}
	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

但是,它不仅只能点鼠标左键,还不能控制频率。(不过你想点右键的话把本代码中所有LEFT改成RIGHT就行了。)

这一份代码十分完美,点击既不规律,还可以控制频率,即我们开头看到的最新连点器。

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
void SetColorAndBackground(int ForgC, int BackC) {
	WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
void UpDaTe(){
	SetColorAndBackground(11,0);
	printf("Much better Irregular Quick Click[Version:4.0]\n(c)light_dream Corporation.\n\n");
	printf("Update on 2023/11/21\n");
	printf("Update:可以使用中文!\n\n");
	
}
void NoTiCe(){
	SetColorAndBackground(12,0);
	printf("使用须知:\n");
	printf("1.设定点击频率的时候,不要让频率超过120!否则你会闻到一股烤焦的味道!\n");
	printf("2.把这玩意用在Minecraft各大服务器的同志们,最好不要让点击频率超过14!否则可能被封!(本人亲身体会)\n");
	printf("3.如果您使用C++编译器编译本代码而乱码,敬请参阅:\n");
	printf("https://www.luogu.com.cn/blog/642173/The-treatment-of-treating-chinese-charactor-in-enbarcadero-dev-dpp!\n\n");
}
int main(){
	srand(time(0));
	char key;
	
	UpDaTe();
	NoTiCe();
	
	SetColorAndBackground(15,0);
	printf("输入您要的点击频率(一个整数,单位 次/秒):");
	int cps;
	scanf("%d",&cps);
	double Cps=cps;
	double sleep_time=1000/Cps;
	int bse=sleep_time;
	bse=bse-5;
	printf("输入您想要按下来启动连点的按键:");
	
	cin>>key;
	if(key>='a'&&key<='z'){
		key=key-32;
	}
	int op;
	printf("您想点左键还是右键?\n");
	SetColorAndBackground(10,0);
	printf("左键");
	SetColorAndBackground(15,0);
	printf("——输入1;\n");
	SetColorAndBackground(10,0);
	printf("右键");
	SetColorAndBackground(15,0);
	printf("——输入2.\n");
	scanf("%d",&op);
	printf("按%c开始连点\n现在的点击频率(单位 次/秒):",key);
	if(op==1){
		while(true){
			int t=rand()%10;
			t+=bse;
			double tt=t;
			double cpsCCPS=1000.0/tt;
		
			if(GetAsyncKeyState(key)){
    	  	    mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,0,0,0,0);
      		    Sleep(t);
      	    	if(t>=bse+8){
	      	    	SetColorAndBackground(12,0);
				}
				else if(t>=bse+5){
					SetColorAndBackground(14,0);
				}
				else if(t>=bse+2){
					SetColorAndBackground(10,0);
				}
				else{
					SetColorAndBackground(9,0);
				}
      	    	printf("%.5f",cpsCCPS);
	      	    if(cpsCCPS<10){
     	 	    	printf("\b\b\b\b\b\b\b");
				}
				else if(cpsCCPS<100&&cpsCCPS>=10){
					printf("\b\b\b\b\b\b\b\b");
				}
				else{
					printf("\b\b\b\b\b\b\b\b\b");
				}
    	  	    SetColorAndBackground(7,0);
    	  	}
		}
	}
	else{
		
		while(true){
			int t=rand()%10;
			t+=bse;
			double tt=t;
			double cpsCCPS=1000.0/tt;
		
			if(GetAsyncKeyState(key)){
      		    mouse_event(MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP,0,0,0,0);
      		    Sleep(t);
      		    if(t>=bse+8){
	      	    	SetColorAndBackground(12,0);
				}
				else if(t>=bse+5){
					SetColorAndBackground(14,0);
				}
				else if(t>=bse+2){
					SetColorAndBackground(10,0);
				}
				else{
					SetColorAndBackground(9,0);
				}
    	  	    printf("%.5f",cpsCCPS);
     	 	    if(cpsCCPS<10){
     	 	    	printf("\b\b\b\b\b\b\b");
				}
				else if(cpsCCPS<100&&cpsCCPS>=10){
					printf("\b\b\b\b\b\b\b\b");
				}
				else{
					printf("\b\b\b\b\b\b\b\b\b");
				}
    	  	    SetColorAndBackground(7,0);
    	  	}
		}
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130

但是说句公道话,你真的不需要这样点击不规律的代码的话,选第一个就是了。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/902198
推荐阅读
相关标签
  

闽ICP备14008679号