当前位置:C++技术网 > 资讯 > C++调用外部程序传递用户名密码登录

C++调用外部程序传递用户名密码登录

更新时间:2016-08-24 20:53:50浏览次数:1+次

各位前辈,大神们,我现在需要不断打开IE浏览器之类的程序,然后还需要输入用户名密码登录,最后要在页面里截图保存,我想把这个工作变成用户层序自动化实现的过程,不用再人工解决,通过C++调用外部程序传递用户名和密码来实现可以吗?关键是这个登录要怎么实现?

C++技术网解答:

你的问题有下面几个:

1.C++打开外部程序(浏览器),即C++启动外部程序方法。

2.用程序模拟网页登陆。

3.登陆后,将网页截图保存。

下面给你分析下实现思路:

第一个问题:C++打开外部程序,也就是启动浏览器。这个好说,在文章《在程序写代码启动/调用浏览器和外部程序》已经有程序代码实现分析了。IE浏览器的程序名称为iexplorer.exe,当然这个方法可以启动任何外部程序,而不仅仅是浏览器。


第二个问题:用程序模拟网页登陆。针对这个问题本身,也就是只是模拟网页登陆,那么你只需要使用http协议的POST方式提交数据即可。网页登陆的本质就是基于HTTP协议的POST方式提交数据。所以,模拟登陆本身不需要在网页中输入。但是,基于你后续的操作需要截图,所以如果直接POST数据,你没法直接得到浏览器界面,而且第一步也没有意义。所以直接POST数据的方式登录针对你这个需求是不可行的。既然是模拟浏览器的登录,你在第一步已经启动了浏览器,那么你在启动浏览器之后,使用Windows的消息和浏览器通信,也就是给浏览器发送窗口消息,来实现模拟鼠标单击和键盘输入。比如发送一个单击的消息就是WM_LBUTTONDOWN,然后附带坐标位置参数,定位到浏览器中网页的输入框位置,然后再发送键盘消息,将你要输入的数据发给浏览器,消息就是WM_KEYDOWN或者WM_CHAR。在消息中附带你要输入的数据。点击登录按钮也是通过WM_LBUTTONDOWN来模拟。这样浏览器就会自动登录了。这个模拟过程和人工输入账号登录是一样的。


第三个问题:登陆后,截图保存。登录成功与否,你没有办法直接判断。你只是模拟登录而已,登录时间与网速有关。所以此时要根据你的网速来自己估算一个时间,在模拟登录之后,要等待一个时间,确保已经登录成功了。然后截屏保存。而截取屏幕保存图像,则在文章《打造自己的屏幕截图软件(QQ截图功能实现)》已经有完整的实现代码。