从WebBrowser加载图像,无需重新加载或复制

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

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中,所有图像都转到临时目录,如果同样发生在这里有没有办法获取该保存图像的路径?

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

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