中所周知,CSDN的登录界面会有一个点赞按钮,而且点赞次数还可以累加,我在写代码的时候就喜欢这样反复点(上班摸鱼),甚至创造了这样的记录(估计也就我这么闲了吧):
为了创造历史新高(应该除我以外没有人会这么无聊),我用c++写了一个自动刷赞器(应该只有我会把c++这样玩),代码如下:
首先,老规矩,看今天要用到的函数或算法。
本代码原理就是反复模拟鼠标左击,这是个老知识了啊(又是一篇水文),因为我最近都在研究这个,所以本篇不做详解,直接看代码:
模拟鼠标左键按下:
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
模拟鼠标左键松开:
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
但是发现一个问题,就是CSDN登录界面每次点一个赞之后,等待大约一秒后才能点下一个。哎,那只能加上Sleep函数了:
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int main(){
Sleep(2000);
while(1){
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//模拟鼠标左击
Sleep(20);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(1000);
}
return 0;
}
呵呵,真的很好玩。但是如果玩着玩着,领导来了,看见我在上班时间玩这玩意,估计今晚晚饭就是炒鱿鱼了。所以,我们可以做一个当鼠标滚轮按下时将写代码界面显示的代码:
函数:
1、检测鼠标滚轮按下函数:
KEY_DOWN(MOUSE_WHEELED)
注意要加头文件“#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)”。
2、将窗口显示在最前端,并全屏:
自定义函数
void full_screen(HWND hwnd){
int cx=GetSystemMetrics(SM_CXSCREEN);
int cy=GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(hwnd,HWND_TOPMOST,0,0,cx,cy,SWP_NOMOVE|SWP_NOSIZE);
}
完整代码:
#include<bits/stdc++.h>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
void full_screen(HWND hwnd){//将窗口最大化并在最前端
int cx=GetSystemMetrics(SM_CXSCREEN);
int cy=GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(hwnd,HWND_TOPMOST,0,0,cx,cy,SWP_NOMOVE|SWP_NOSIZE);
}
int main(){
Sleep(2000);//请在两秒内将开发工具窗口置顶
HWND hwnd=GetForegroundWindow();//存储开发工具窗口句柄
Sleep(2000);//请在两秒内将鼠标移动至点赞按钮所在位置
while(!KEY_DOWN(MOUSE_WHEELED)){//直到滚轮键按下结束循环
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//模拟鼠标左击
Sleep(20);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(1000);
}
full_screen(hwnd);
return 0;
}
为了将窗口置顶,我是费劲了千辛万苦,终于找到了正确方法。但是之后我才发现,我们也可以将网页窗口隐藏:
#include<bits/stdc++.h>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
int main(){
Sleep(2000);//请在两秒内将鼠标移动至点赞按钮所在位置
while(!KEY_DOWN(MOUSE_WHEELED)){//直到滚轮键按下结束循环
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//模拟鼠标左击
Sleep(20);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(1000);
}
ShowWindow(GetForegroundWindow(),0);
return 0;
}
写好了,本篇文章就到这里,欢迎大家留言建议。