纯C语言制作自动登录账号
本文适合有C语言基础的人观看
Hello,大家好。由于这次疫情,开学延期,本人是五中初二学生党一枚,第一次写文章,不好的地方请在评论区里指出。不知道有没有五中的学生们来看,如题图所示,这是五中鑫考云的登录界面,我们是需要天天上网课的,不知道你们有没有被每回的登录界面整烦,反正我是烦了。于是,我就做了下面的东东。先上动图:
动图如上https://www.zhihu.com/video/1228796281683673088
看到这里有没有会C语言的童鞋呢?大家都知道C语言,不知道也应该听说过,编程语言之祖,1972年的语言,现在依然位居榜单第二,上证据:
你学的编程语言在哪一段位呢?
今天我们来讲一讲用C语言实现自动登录。因为我上网课用鑫考云,别的软件大同小异。
这用的是C语言里的来实现的。先逐一讲解,最后上代码。
1.ShellExecute( )函数
这个函数有6个参数,乍一听可能很多,但他有许多功能,他可以打开网页或exe文件,咱们一个一个讲,先举个栗子:
ShellExecute(0, "open", "notepad", 0, 0, 1);
这行代码是用来打开记事本的,下面逐个讲解。
第一个参数( 0 ):这个是代表系统弹出的,我也不太理解,就把他设成0就行了.
第二个参数( "open" ):就是代表打开,执行的意思,还有以下几个:"print"(打印文件),"explore"(浏览文件).
第三个参数( "notepad" ):就是打开的exe文件名称,也可以是网页("http://").
第四,五个参数( 0,0 ):默认就为 0 ,也可省略,写成这样.
ShellExecute(0,"open","notepad","","",1);
第六个参数( 1 ):这是控制打开的网页或exe文件,0代表窗口隐藏,1代表正常,3代表最大化,6代表最小化.
2.SetCursorPos( )函数
这个函数非常好理解,就是把光标移到相应的位置
这就是将鼠标移到屏幕上(500,400)的位置,很简单吧.
注意,电脑的坐标跟数学的不一样. x从左往右递增,x从上往下递增。即:最左上方可见像素的坐标是(0,0).
3.mouse_event( )函数
这个函数是控制鼠标点击的,共有五个参数。
先上个栗子:
mouse_event(MOUSEEVENTF_LEFTDOWN, 0,0,0,0);
第一个参数( MOUSEEVENTF_LEFTDOWN ):这就是控制鼠标点击,这个意思是将鼠标左键按一下。同样,还有以下几个常用的:
MOUSEEVENTF_LEFTDOWN //这表示鼠标左键按下 MOUSEEVENTF_LEFTUP //这表示鼠标左键松开MOUSEEVENTF_RIGHTDOWN //这表示鼠标右键按下MOUSEEVENTF_RIGHTUP //这表示鼠标右键松开MOUSEEVENTF_MIDDLEDOWN //这表示鼠标中键按下MOUSEEVENTF_MIDDLEUP //这表示鼠标中键松开MOUSEEVENTF_WHEEL //这表示鼠标轮被滚动,如果鼠标有一//个滚轮。滚动的数量由第四个参数给出
第二个参数( 0 ):这是指经过上一个鼠标事件后移动的x数量,一般设成0就好
第三个参数( 0 ):这是指经过上一个鼠标事件后移动的y数量,一般设成0就好
第四个参数( 0 ):这是指滚轮移动的数量,正数向前滚动,负数向后滚动,与 MOUSEEVENTF_WHEEL 一块使用
第五个参数( 0 ):这是指定与鼠标事件相关的附加32位值,一般设成0就好
4.keybd_event( )函数
这个函数是控制键盘输入的,常用参数有四个。老规矩,先上栗子:
keybd_event(97,0,0,0);//按下a键
第一个参数( 97 ):输入的按键,可以用 'a' 来表示,也可以用ASCII码来表示,ASCII码表如下:
建议大家可以把最常用的背过,如A是65,a是97.(只是个人建议)
第二个参数( 0 ):这是定义该键的硬件扫描码,就写0就行.
第三个参数( 0 ):可以为0,也可为KEYEVENTF_KEYUP(常用的), 0 意为是按下那个键,而KEYEVENTF_KEYUP 意为松开键
第四个参数( 0 ):定义与击键相关的附加的32位值,写0就行了.
以上基本就是今天要讲的全部干货,下面开始把他们组装成一个可执行程序.
先让我们做些计划,本人较懒,先不画流程图了.
1.打开学校的官网:鑫考云校园
2.将鼠标移到输入账号的地方
3.单击一下输入框
4.输入账号
5.接着移到输入密码的地方
6.单击一下密码框
7.再输入密码。
8.移到确认的地方
9.点击确认。大功告成
步骤4和步骤7是本程序的核心部分,接下来让我们一步一步写。
1.打开官网:
ShellExecute(0,"open","http://home.xinkaoyun.com/login.html",0,0,1);
Sleep(3000); //等学校官网加载出页面来
2.将鼠标移到账号框:
SetCursorPos(1100,330); //本人测了好久的坐标,累死了
3.单击一下输入框:
mouse_event(MOUSEEVENTF_LEFTDOWN, 0,0,0,0); //按下鼠标
mouse_event(MOUSEEVENTF_LEFTUP, 0,0,0,0); //松开鼠标,这两个组成单击动作
4.输入账号:(核心)
char user[]="XXXXXXXXXXX";
//你自己的账号
for (int i&#61;0;i<11;i&#43;&#43;) {keybd_event(user[i], 0, 0, 0);keybd_event(user[i],0, KEYEVENTF_KEYUP, 0);//循环&#xff0c;将你的账号输进去Sleep(100);
}
5.移到密码框&#xff1a;
SetCursorPos(1100,380); //也是实测的坐标
6.单击密码框&#xff1a;
mouse_event(MOUSEEVENTF_LEFTDOWN, 0,0,0,0); //跟前面一样
mouse_event(MOUSEEVENTF_LEFTUP, 0,0,0,0);
7.输入密码&#xff1a;&#xff08;核心&#xff09;
char password[]&#61;"XXXXXX";
//这里写你密码
for (i&#61;0;i<6;i&#43;&#43;) {//这里的数你密码有几位就写几keybd_event(password[i], 0, 0, 0);keybd_event(password[i],0, KEYEVENTF_KEYUP, 0);//将密码输进去Sleep(100);
}
8&#xff0c;9.移到确认的地方并单击&#xff1a;
SetCursorPos(1100,444);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); //跟前面一样
我们的程序就做完了&#xff01;( 手动撒花 )
下面是完整程序&#xff1a;
#include
int main() {char user[]&#61;"XXXXXXXXXXX";char password[]&#61;"XXXXXX";ShellExecute(0,"open","http://home.xinkaoyun.com/login.html",0,0,1);Sleep(3000);SetCursorPos(1100,330);mouse_event(MOUSEEVENTF_LEFTDOWN, 0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP, 0,0,0,0);for (int i&#61;0;i<11;i&#43;&#43;) {keybd_event(user[i], 0, 0, 0);keybd_event(user[i],0, KEYEVENTF_KEYUP, 0);Sleep(100);}//以上为输入用户SetCursorPos(1100,380);mouse_event(MOUSEEVENTF_LEFTDOWN, 0,0,0,0);mouse_event( MOUSEEVENTF_LEFTUP, 0,0,0,0);for (i&#61;0;i<6;i&#43;&#43;) {keybd_event(password[i], 0, 0, 0);keybd_event(password[i],0, KEYEVENTF_KEYUP, 0);Sleep(100);}//以上为输入密码SetCursorPos(1100,444);mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);return 0;
}
实际写下来&#xff0c;代码并不多&#xff0c;只有不到30行&#xff0c;但是它也帮我们节约了一些时间&#xff0c;这是我第一次将代码与实际生活联系在一起&#xff0c;写这一篇文章&#xff0c;我也查阅了很多资料&#xff0c;很多当时不明白的地方现在也明白多了。本人初二党一枚&#xff0c;第一次写文章&#xff0c;当做自勉了。也祝看我文章的小伙伴们学习成绩蒸蒸日上&#xff01;如果你觉得这篇文章对你有用&#xff0c;请点个赞吧&#xff01;
P.S.本人平时学习繁忙&#xff0c;更新可能比较慢&#xff0c;请大家见谅&#xff0c;本文写的比较仓促&#xff0c;有什么问题请在评论区里指出&#xff0c;大神勿喷&#xff0c;谢谢.