如何从DotNetBrowser控件c#获取验证码图像并将其设置为pictureBox

时间:2019-01-23 16:56:36

标签: webbrowser-control captcha dotnetbrowser

我在c#桌面应用程序中使用DotNetBrowser控件。我无法使用此获取验证码图片。

在Webbrowser控件中很容易,但是在DotNetBrowser中,我不知道如何在c#中做到这一点

https://dotnetbrowser.support.teamdev.com/support/solutions/9000111998

如果我使用Webbrowser控件,此代码将正常工作

private Image getCaptcha()
{
    HtmlElement ement = webBrowser1.Document.GetElementById("imgCaptcha");
    if (ement == null)
    {
        return null;
    }
    mshtml.HTMLWindow2 w2 = (mshtml.HTMLWindow2)webBrowser1.Document.Window.DomWindow;
    w2.execScript("var ctrlRange = document.body.createControlRange();
    ctrlRange.add(document.getElementById('imgCaptcha'));
    ctrlRange.execCommand('Copy');", "javascript");
    return Clipboard.GetImage();
}

我在DotNetBrowser控件中需要类似的代码

1 个答案:

答案 0 :(得分:0)

您可以使用'Browser.ImageProvider.GetImage'方法获取页面的屏幕截图,然后将此图像裁剪到验证码图像的边界。 唯一的限制是浏览器应使用轻量级渲染模式,因为在重量级模式下无法获取图像。

所描述的方法可能类似于以下源代码:

browserView = new WinFormsBrowserView(BrowserFactory.Create(BrowserType.LIGHTWEIGHT));
//...
browserView.Browser.SetSize(1024, 768); 
Bitmap screenshot = browserView.Browser.ImageProvider.GetImage() as Bitmap; 
DOMElement captchaElement = browserView.Browser.GetDocument().GetElementById("imgCaptcha"); 
pictureBox1.Image = screenshot?.Clone(captchaElement.BoundingClientRect, screenshot.PixelFormat);