C# 获取webbrowser中的验证码图片
在网页中加载的验证码图片,如果通过url下载,则会自动刷新该链接,导致下载的验证码图片与当前页面显示的图片不一致。
1、需要在解决方案的引用处引入 Microsoft.mshtml
2、代码如下:
using mshtml;//这一步必须
/// <summary>
/// 获取当前WebBrowser中的HtmlElement图片,并保存到filePath路径
/// </summary>
/// <param name="webBrowser"></param>
/// <param name="imgeTag"></param>
/// <param name="filePath"></param>
/// <returns></returns>
public Bitmap MshtmlImage(WebBrowser webBrowser, HtmlElement imgeTag, string filePath)
{
try
{
HTMLDocument doc = (HTMLDocument)webBrowser.Document.DomDocument;
HTMLBody body = (HTMLBody)doc.body;
IHTMLControlRange rang = (IHTMLControlRange)body.createControlRange();
//图片地址
IHTMLControlElement Img = (IHTMLControlElement)imgeTag.DomElement;
rang.add(Img);
//拷贝到内存
rang.execCommand("Copy", false, null);
Image numImage = Clipboard.GetImage();
filePath += "vericodeimage.png";
if (File.Exists(filePath))
File.Delete(filePath);
using (File.Create(filePath)) { }
numImage.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
return new Bitmap(numImage);
}
catch (Exception ex)
{
throw ex;
}
}