WebBrowser Copy Image to Clipboard

风流意气都作罢 提交于 2019-11-28 05:03:20

问题


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 the page.

Any help is much appreciated!


回答1:


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);
  }
}



回答2:


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);
}


来源:https://stackoverflow.com/questions/3833718/webbrowser-copy-image-to-clipboard

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!