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);
}
精彩评论