我在使用VBA中的WebBrowser从网页下载图像时出现问题。
代码如下:
私有函数downloadImage(name As String,index As Integer,path As String,IDName As String)
Dim objDoc As IHTMLDocument2 = DirectCast(WebBrowser1.Document.DomDocument, IHTMLDocument2)
Dim imgRange As IHTMLControlRange = (CType(objDoc.body, HTMLBody)).createControlRange()
Dim count As Integer = 0
Dim count2 As Integer = 0
For Each img As IHTMLImgElement In objDoc.images
If Not IsNothing(img.id) Then
If img.id.Equals(name) And count.Equals(index) Then
imgRange.add(CType(img, IHTMLControlElement))
imgRange.execCommand("Copy", False, Nothing)
Dim bmp As Bitmap = CType(Clipboard.GetDataObject().GetData(DataFormats.Bitmap), Bitmap)
bmp.Save(path & IDName & ".bmp", System.Drawing.Imaging.ImageFormat.Bmp)
count = count + 1
ElseIf img.id.Equals(name) Then
count = count + 1
End If
End If
count2 = count2 + 1
Next
Return path & IDName
End Function
问题是,在行bmp.Save(路径& IDName&“。bmp”,System.Drawing.Imaging.ImageFormat.Bmp)中,它给出了以下异常:
System.Drawing.dll中出现未处理的“System.Runtime.InteropServices.ExternalException”类型异常
其他信息:错误genéricoenGDI +。
我会尝试查找和测试答案,如果我发现了某些内容则更新。
感谢您的帮助!
在其他帖子和其他论坛/网页上查找此错误,我发现在保存之前内存流关闭时很常见...但我还没有关闭内存流。
问题的一个要求是无法使用src,使用https发送图像,以后删除,这就是我使用剪贴板的原因。
更新: 代码是对的,我的大脑出了什么问题。
错误的文件路径,GDI +上的异常......
我会保留这段代码,可能会帮助某人