C语言 在程序中打开网页,模拟鼠标点击、键盘输入
一、简述
记--使用C语言 打开指定网页,并模拟鼠标点击、键盘输入。实现半自动填写账号密码,并登录网站(当然现在的大部分网站都有验证码,或有检测"非人为"操作,以防止恶意注册、登录)。
例子打包:链接: /s/1eStV0lAcmr8kmEA0n3LRcg 提取码: 7kvj
二、效果 (程序填写账号密码,实现半自动登录)
三、工程结构
四、源文件
main.c文件
#include <stdio.h>#include <stdlib.h>#include <Windows.h> //ShellExecuteA()//打开某个网址:website (使用默认浏览器) void open_web(char *website){ShellExecuteA(0,"open", website,0,0,1);}//模拟鼠标点击 (x,y)是要点击的位置 void click(int x, int y){//将鼠标光标移动到 指定的位置例子中屏幕分辨率1600x900 在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE, x*65535/1600, y*65535/900, 0, 0);Sleep(50);//稍微延时50ms mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//鼠标左键按下 mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//鼠标左键抬起}//模拟键盘输入 keybd_event(要按下的字符,0,动作,0);动作为0是按下,动作为2是抬起 void input(){char user[]="1234567890123";//账号 char pwd[]="1234567890";//密码 click(823,392); //点击"用户名输入框"的位置 int i;//输入账号 for(i=0;i<sizeof(user);i++){keybd_event(user[i],0,0,0);keybd_event(user[i],0,2,0);Sleep(30);}//tab键 对应的编号是0x09 让密码输入框 获取焦点 keybd_event(0x09,0,0,0);//按下 keybd_event(0x09,0,2,0); //松开 Sleep(30);//输入密码 for(i=0;i<sizeof(pwd);i++){keybd_event(pwd[i],0,0,0);keybd_event(pwd[i],0,2,0);Sleep(30);}//模拟按下tab键 让登录按钮获取焦点 click(824,530);//点击"登录按钮" Sleep(30);}//将chrome.exe进程杀掉,在例子中尚未使用 void close(){system("taskkill /f /im chrome.exe");}int main(int argc,char *argv[]){open_web("/");//打开某个网址 Sleep(4000);//延时4秒,等待网页打开完毕,再进行其它操作。根据实际情况(浏览器打开速度,网速) click(1454, 126);//点击"登录"(1454,126) Sleep(150);click(712,658);//点击"用户名登录"Sleep(150);input();//模拟鼠标动作,键盘输入 return 0;}
五、总结
5.1 ShellExecute()函数
打开指定网页:
ShellExecute(0, "open", "/",0, 0, 1);//最后的参数是控制最大化、最小化,隐藏
打开某个可执行文件:
#include <stdio.h>#include <windows.h> //ShellExecute() int main(int argc, char *argv[]){ShellExecute(0, "open", "C:\\Users\\newuser\\Desktop\\串口助手.exe",0, 0, 1);//最后的参数是控制最大化、最小化printf("Hello World!\n");return 0;}
5.2mouse_event()函数
将鼠标移动到指定位置(x,y)
//例子中屏幕分辨率1600x900 在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE, x*65535/1600, y*65535/900, 0, 0);
按下鼠标左键,然后抬起
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//鼠标左键按下 mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//鼠标左键抬起
5.3keybd_event()函数
模拟按下数字按键"9": (‘9’的和0x39都表示数字按键9)
keybd_event('9',0,0,0);//按下按键 ‘9’keybd_event('9',0,2,0);//抬起按键 ‘9’或 0x39keybd_event(0x39,0,0,0);//按下按键 ‘9’keybd_event(0x39,0,2,0);//抬起按键 ‘9’
虚拟按键 代码列表:/zh-cn/windows/desktop/inputdev/virtual-key-codes