无需下载或复制即可从Web浏览器加载图像

时间:2011-09-01 17:49:30

标签: c# webbrowser-control clipboard

我目前正在从剪贴板复制到从浏览器加载图片

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

但是使用剪贴板时遇到了一些问题。有没有其他方法可以做到这一点。在Internet Explorer中,所有图像都会转到临时目录,如果发生同样的情况,有没有办法获取该保存图像的路径?

1 个答案:

答案 0 :(得分:2)

对于页面上的每个图像,您可以收集其URL,然后调用WinINET缓存枚举函数(例如FindFirstURLCacheEntry)以在Temporary Internet Files文件夹中找到后备缓存文件。但是,不能保证文件将在缓存中,因为它可能已经提供了禁止缓存的标头等。

您可以考虑的一种方法是在您的应用程序中使用FiddlerCore(www.fiddler2.com/core);然后,您可以“脱线”抓住所有传输的图像,并随心所欲地做任何事情。