参考:https://blog.csdn.net/qq_36482772/article/details/81433452

// 添加MSHTML引用
// 添加MSHTML引用
// 添加MSHTML引用using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using mshtml;
using System.Threading;
using System.Runtime.InteropServices;namespace ViewYZM
{//要发信息数据结构,作为SendMessage函数的LParam参数public struct SENDDATASTRUCT{public IntPtr dwData;       //附加一些个人自定义标志信息,自己喜欢public int DataLength;      //信息的长度[MarshalAs(UnmanagedType.LPStr)]public string lpData;       //要发送的信息}public partial class Form1 : Form{public Form1(){InitializeComponent();}//自定义的消息public const int USER = 0x500;public const int MSG_VEIW_YZM = USER + 1;public IntPtr mMainHandle = IntPtr.Zero;//消息发送API[DllImport("User32.dll", EntryPoint = "SendMessage")]private static extern int SendMessage(IntPtr hWnd,        // 信息发住的窗口的句柄int Msg,            // 消息IDint wParam,         // 参数1ref SENDDATASTRUCT lParam // 参数2   [MarshalAs(UnmanagedType.LPTStr)]StringBuilder lParam);string mWerbUrl = "http://xxxxxx";string mYmzUrl = string.Empty;private void Form1_Load(object sender, EventArgs e){mMainHandle = this.Handle;// http://xxxx/getCaptchamYmzUrl = mWerbUrl + "/webwcf/BidCmd.svc/WebCmd/getCaptcha"; // 验证码图片urlwebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);webBrowser.Navigate(mWerbUrl);//this.ptYzm.Image = null;//this.ptYzm.WaitOnLoad = false; //设置为异步加载图片//this.ptYzm.SizeMode = PictureBoxSizeMode.Normal;//this.ptYzm.LoadAsync(mYmzUrl);}/// <summary>/// 网页加载完毕 /// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void webBrowser_DocumentCompleted(object sender, EventArgs e){// 网页加载完成 此时验证码图片不一定已经加载// 为了保险,开个线程等待几秒钟,然后再获取即可Thread thd = new Thread(ThreadViewYzm);thd.Start();}private void ThreadViewYzm(object prm){Thread.Sleep(1000 * 5); // 等待验证图片加载完成SENDDATASTRUCT myData = new SENDDATASTRUCT();SendMessage(mMainHandle, MSG_VEIW_YZM, 0, ref myData);}/// <summary>/// 获取验证码方法/// </summary>/// <param name="WebControlName"></param>/// <param name="ImgeTag"></param>/// <returns></returns>private Image GetCodeImage(WebBrowser WebControlName, HtmlElement ImgeTag){HTMLDocument hdoc = (HTMLDocument)WebControlName.Document.DomDocument;HTMLBody hbody = (HTMLBody)hdoc.body;IHTMLControlRange hcr = (IHTMLControlRange)hbody.createControlRange();IHTMLControlElement hImg = (IHTMLControlElement)ImgeTag.DomElement;hcr.add(hImg);hcr.execCommand("Copy", false, null);Image CodeImage = Clipboard.GetImage();return CodeImage;}private void btnGetYzm_Click(object sender, EventArgs e){HtmlElement ImageCodeTag = webBrowser.Document.GetElementById("imgcode");Image FinalImage = GetCodeImage(webBrowser, ImageCodeTag);this.ptYzm.Image = FinalImage;}///重写窗体的消息处理函数DefWndProc,从中加入自己定义消息 MYMESSAGE 的检测的处理入口protected override void DefWndProc(ref Message m){switch (m.Msg){//接收自定义消息MYMESSAGE,并显示其参数case MSG_VEIW_YZM:btnGetYzm_Click(null, null);break;default:base.DefWndProc(ref m);break;}}}
}

C#获取登录验证码图片相关推荐

  1. python 识别登陆验证码图片(完整代码)_python 识别登录验证码图片功能的实现代码(完整代码)...

    在编写自动化测试用例的时候,每次登录都需要输入验证码,后来想把让python自己识别图片里的验证码,不需要自己手动登陆,所以查了一下识别功能怎么实现,做一下笔记. 首选导入一些用到的库,re.Imag ...

  2. UI自动化中获取登录验证码

    通过cookie绕过验证码的操作方式 1)先手动登录通过,获取cooki 2)用add_cookie()方式把cookie信息添加到cookie中,刷新网站,即可完成自动登录操作,有一定得时效性,失效 ...

  3. 【QT学习】扫描二维码获取登录验证码(完整源码)

  4. 【Lilishop商城】No3-2.模块详细设计,系统设置(系统配置、行政区划、物流公司、滑块验证码图片、敏感词过滤)的详细设计

     仅涉及后端,全部目录看顶部专栏,代码.文档.接口路径在: [Lilishop商城]记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑,其中重点包括接 ...

  5. 【Web安全】通过机器学习破解验证码图片

    背景 机器学习,即Machine Learning,属于AI范畴,是深度学习的父集. 通过如何用机器学习(ML)在15分钟内破解图片验证码的一篇文章,看到了solving-captchas-code- ...

  6. 模拟动态登录,获取cookie和图片验证码登录(AcFun和豆瓣)

    #模拟登录acfun #导入第三方库 import requests import pickle from bs4 import BeautifulSoup from fake_useragent i ...

  7. 用来向登录页面输出验证码图片的一般处理程序页面

    这是自己以前做的B/S项目中的一个输出验证码图片的页面,没什么技术含量,希望高手们不要嘲笑,只是希望为需要帮助的人尽一点绵薄之力罢了! 页面简介:该页面是一个以ashx 为后缀的一般处理程序页面,用于 ...

  8. 使用appfox工具测试登录有图片验证码接口的问题

    环境简介 服务器环境(运行在虚拟机之上): 环境 环境名称 操作系统 Win10 1905 专业版 数据库 sqlserver 2008R2 本机环境: 环境 环境名称 操作系统 win10 1905 ...

  9. 爬虫三(Bs4搜索、Selenium基本使用、无界面浏览器、Selenium自动登录百度案例、自动获取12306登录验证码案例、切换选项卡、浏览器前进后退、登录Cnblogs获取Cookie自动点赞)

    文章标题 一.Bs4搜索文档树 二.CSS选择器 三.selenium基本使用 四.无界面浏览器 五.selenium其他使用 1)自动登录百度案例 2)获取位置属性大小.文本 3)自动获取12306 ...

  10. python+appium自动化测试获取短信+图片验证码

    本篇文章主要讲述的是如何自动获取短信验证码和如何自动获取图片验证码,并写入到对应的输入框中(以下均使用微博的找回密码作为示例) 获取短信验证码的方法有三种,如下所示: 在手机的通知栏中获取短信内容 通 ...

最新文章

  1. 小心陷入MySQL索引的坑
  2. C语言打印链表的中间节点的算法(附完整源码)
  3. 从贝泰妮的全域消费者运营,看Quick Audience如何链接产品服务商生态
  4. 监控系统安装配置文档(Nagios+Cacti+Nconf)
  5. 加载更多时,判断tableView快要滑动到底部的时候在去请求更多数据的公式
  6. linux主线程结束 子线程还能运行么,linux主线程和子线程
  7. layui 加载第三方插件
  8. (软件工程复习核心重点)第四章总体设计-第四节:描绘软件结构的图形工具
  9. python元组转换成列表_python-将元组的无序列表转换为pandas DataFrame
  10. [Usaco2008 Mar]River Crossing渡河问题
  11. 【图像隐写】基于matlab GUI DCT数字水印嵌入+提取【含Matlab源码 1671期】
  12. 将爬取到的数据存入数据框并导出
  13. Navicat Premium for Mac 11.1.8 免费中文破解版下载
  14. 挖洞手记——软媒魔方可信任程序执行漏洞
  15. 2016年9月16日-乔任梁逝世,陈乔恩发文悼念
  16. php域名转向,php强制用户转向www域名的方法_PHP
  17. stm32下OLED屏的应用
  18. 9.5 预测市场和真实世界的数据源
  19. gitbook 入门教程之还在搞公众号互推涨粉?gitbook 集成导流工具,轻轻松松躺增粉丝!...
  20. Word2vec原理与应用

热门文章

  1. 《伪化生:修罗战场》写给那些在读伪化生专业的
  2. excel概率密度函数公式_excel统计函数公式汇总
  3. acs cisco 查看log_Cisco ASA 5510 防火墙 配置笔记
  4. Stacer ---- Linux系统优化和监测工具
  5. html flash mp3播放器,网页实用最简单的flash mp3播放器代码-多样式
  6. Ubuntu18.04安装后检测不到集成声卡问题
  7. 手持式频谱仪帮助解决链路故障
  8. 射频芯片ATE测试从入门到放弃之基本概念
  9. 社会工程学——基础认知(补充)
  10. DNS服务器设置正确,DNS服务器配置(DNS各属性详细介绍)