网站首页 > 文章精选 正文
各位前辈,大神们,我现在需要不断打开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截图功能实现)》已经有完整的实现代码。
文章引用:
在程序写代码启动/调用浏览器和外部程序
http://www.cjjjs.com/paper/xmkf/6232015193315445.aspx
打造自己的屏幕截图软件(QQ截图功能实现)
http://www.cjjjs.com/paper/xmkf/2016324123740843.aspx
文章来源:C++技术网
文章地址:
http://www.cjjjs.com/paper/gzsh/2016824205350463.aspx
猜你喜欢
- 2025-06-28 程序员C/C++你不得不看的27个优化建议
- 2025-06-28 [c++面试题]数据库中的outer join, 你了解吗?
- 2025-06-28 开机弹出 C++ Runtime Library: Assertion failed窗口解决方法
- 2025-06-28 C++编程:标准库visit和variant用法
- 2025-06-28 C/C++编程推荐学习顺序和书籍(c++编程需要学多久)
- 2025-06-28 c/c++如何避免头文件被多次包含(c语言避免头文件重复定义)
- 2025-06-28 C++程序编译之谜(一)——多文件编译的奇怪现象
- 2025-06-28 C++20 香不香?从四大新特性看起(c++20支持)
- 2025-06-28 C++知识点 13:extern“C”(c语言extern的用法)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)