开发者

WebBrowser Copy Image to Clipboard

开发者 https://www.devze.com 2023-01-18 12:10 出处:网络
I\'m using a WebBrowser control and want to copy a particular image on the web page to the clipboard. I am aware that I can use the WebBrowser.Document.ExecCommand method to copy the currently selecte

I'm using a WebBrowser control and want to copy a particular image on the web page to the clipboard. I am aware that I can use the WebBrowser.Document.ExecCommand method to copy the currently selected region of the page but cannot work out how to direct the selection to cover a particular HtmlElement or region of t开发者_高级运维he page.

Any help is much appreciated!


I didn't write this but found it a while ago and thought it would help you out.

http://www.codeproject.com/Messages/3206780/Re-Image-in-WebBrowser.aspx

IHTMLDocument2 doc = (IHTMLDocument2) webBrowser1.Document.DomDocument;
IHTMLControlRange imgRange = (IHTMLControlRange) ((HTMLBody) doc.body).createControlRange();

foreach (IHTMLImgElement img in doc.images)
{
  imgRange.add((IHTMLControlElement) img);

  imgRange.execCommand("Copy", false, null);

  using (Bitmap bmp = (Bitmap) Clipboard.GetDataObject().GetData(DataFormats.Bitmap))
  {
    bmp.Save(@"C:\"+img.nameProp);
  }
}


I know it is old but in case someone still looking for it. if you only want to copy a specific image you can use the following modified version of the code

string image_name = "temp.bmp";
IHTMLDocument2 document = (IHTMLDocument2)webBrowser1.Document.DomDocument;
IHTMLControlRange imgRange = (IHTMLControlRange)((HTMLBody)document.body).createControlRange();

imgRange.add(document.all.item(HTML_IMAGE_ID));
imgRange.execCommand("Copy");
using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap))
{
      bmp.Save(image_name);
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号