Как получить изображение Captcha из DotNetBrowser Control c # и установить в pictureBox - PullRequest
0 голосов
/ 23 января 2019

Я использую DotNetBrowser Control в своем настольном приложении c #.Я не могу получить изображение с помощью этого кода.

Это просто в управлении 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 голосов
/ 31 января 2019

Вы можете использовать метод 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);
...