WebBrowser复制图像到剪贴板

3
我正在使用WebBrowser控件,并希望将网页上的特定图片复制到剪贴板。我知道可以使用WebBrowser.Document.ExecCommand方法来复制页面的当前选择区域,但无法确定如何指定选择特定的HtmlElement或页面区域。非常感谢您的任何帮助!
2个回答

9

我没有写这篇文章,但是我在一段时间前找到它并认为它会对你有所帮助。

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

4
谢谢!只是未来有人使用时的参考 - 您需要将 Microsoft.mshtml 引用添加到您的项目中,并在类文件中添加 "using mshtml"。 - JoeR
@JoeR,谢谢你的信息。这很老了,我已经有一段时间没有使用这段代码了,但在阅读了你的问题后我想到我还保存着它。 - Justin
太棒了,伙计!! - carck3r

1

我知道这个问题很老了,但如果仍然有人在寻找解决方案。 如果你只想复制特定的图片,可以使用以下修改后的代码。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接