2013-06-01 79 views
0

我知道一个图像可以从网页浏览器控件中打开的网站上下载,但实际上通过获取图像URL并下载该图像。有一个网站不允许直接链接,所以图片无法下载,所以我能想到的唯一方法就是从网页浏览器控件的缓存中复制图片。从VB.NET中存在的网页浏览器控件的缓存复制图像

+0

http://stackoverflow.com/问题/ 7274329/load-image-from-webbrowser-without-redownloading-or-copying – volody

+0

对此似乎不错,但它似乎在C#中,你能帮忙吗 –

回答

0

您可以使用在线c#转换为vb.net转换器,如telerikdeveloperfusion即可在vb.net中获取代码。

  1. 添加参考Microsoft.mshtml到项目
  2. 下一个代码添加到web浏览器DocumentCompleted事件处理

示例代码:

Private Sub webBrowser1_DocumentCompleted(sender As Object, _ 
    e As WebBrowserDocumentCompletedEventArgs) _ 
    Handles WebBrowser1.DocumentCompleted 

    Dim doc As IHTMLDocument2 = _ 
     DirectCast(webBrowser1.Document.DomDocument, IHTMLDocument2) 

    Dim imgRange As IHTMLControlRange = _ 
     DirectCast(DirectCast(doc.body, _ 
     HTMLBody).createControlRange(), IHTMLControlRange) 

    For Each img As IHTMLImgElement In doc.images 
    imgRange.add(DirectCast(img, IHTMLControlElement)) 

    imgRange.execCommand("Copy", False, Nothing) 

    Using bmp As Bitmap = DirectCast(_ 
     Clipboard.GetDataObject().GetData(DataFormats.Bitmap), Bitmap) 
     bmp.Save("C:\" + img.nameProp) 
    End Using 
    Next 

End Sub 
+0

为什么说我HTMLDocument2未定义?我已经添加了对mshtml的引用已经..和IHTMLControlRange和IHTMLImgElement相同的错误 –

+0

确定问题已解决,但文件没有保存,甚至没有在剪贴板上 –

+0

doc.images集合将只枚举主要文档图像(顶部框架),也许你的图像是在帧集合 – volody