【问题标题】:How to get Captcha image from DotNetBrowser Control c# and set to pictureBox如何从 DotNetBrowser Control c# 获取验证码图像并设置为图片框
【发布时间】:2019-01-23 16:56:35
【问题描述】:

我在我的 c# 桌面应用程序中使用 DotNetBrowser Control。我无法使用此获取验证码图像。

在 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 控件中的类似代码

【问题讨论】:

    标签: webbrowser-control captcha dotnetbrowser


    【解决方案1】:

    您可以使用 '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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 2022-01-02
      • 2022-12-19
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      相关资源
      最近更新 更多