2010-09-30 174 views
3

我正在使用WebBrowser控件,并希望将网页上的特定图像复制到剪贴板。我知道我可以使用WebBrowser.Document.ExecCommand方法来复制当前选定的页面区域,但无法找出如何指导选择来覆盖页面的特定HtmlElement或区域。WebBrowser将图像复制到剪贴板

任何帮助非常感谢!

回答

7

我没有写这个,但发现它不久前,并认为它会帮助你。

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

谢谢!仅供将来参考给其他人使用,但您需要将Microsoft.mshtml的引用添加到您的项目中,并将“使用mshtml”添加到您的类文件中。 – JoeR 2010-09-30 19:06:05

+0

@JoeR,感谢您提供的信息,这是非常古老的,我没有在一段时间内使用过这些代码,但是我在回忆完您的问题后回想起它。 – Justin 2010-10-05 18:20:46

+0

真棒,老兄! – carck3r 2017-02-14 10:38:33

0

我知道这是旧的,但万一有人还在寻找它。 如果你只想复制一个特定的图像,你可以使用下面的修改版本的代码

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