我在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控件中需要类似的代码
答案 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);