如果知道图片路径,
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Public Function DownFile(URL As String, LocalFilename As String) As Boolean '下载文件
Dim lngRetVal As Long
lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
If lngRetVal = 0 Then
DownloadFile = True
Else
Debug.Print "DownloadFile Error"
End If
End Function
'WININET访问网络API
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal lpszServerName As String, ByVal nProxyPort As Integer, ByVal lpszUsername As String, ByVal lpszPassword As String, ByVal dwService As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternet As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" (ByVal hHttpSession As Long, ByVal sVerb As String, ByVal sObjectName As String, ByVal sVersion As String, ByVal sReferer As String, ByVal something As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal sOptional As String, ByVal lOptionalLength As Long) As Integer
Private Declare Function HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" (ByVal hHttpRequest As Long, ByVal lInfoLevel As Long, ByRef sBuffer As Any, ByRef lBufferLength As Long, ByRef lIndex As Long) As Integer
Private Declare Function HttpAddRequestHeaders Lib "wininet.dll" Alias "HttpAddRequestHeadersA" (ByVal hHttpRequest As Long, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lModifiers As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetReadFileByte Lib "wininet.dll" Alias "InternetReadFile" (ByVal hFile As Long, ByRef sBuffer As Byte, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Const UserAgent = "Mozilla/4.0 (UlickBOT(www.Ulick.Net); MSIE 6.0; Windows NT 5.1)"
Private hNet As Long
Private hConnect As Long
Private hRequest As Long
Private hUrlFile As Long
Private bRet As Long
Private Sub Class_Initialize()
hNet = InternetOpen(UserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, INTERNET_INVALID_PORT_NUMBER, 0)
End Sub
Private Sub Class_Terminate()
If hRequest Then InternetCloseHandle hRequest
If hConnect Then InternetCloseHandle hConnect
If hNet Then InternetCloseHandle hNet
End Sub
'发送URL
Public Function SendUrl(ByVal sUrl As String) As Long
'On Error Resume Next
Dim hUrl As Long
hUrl = InternetOpenUrl(hNet, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
SendUrl = hUrl
End Function
'发送URL,返回这个URL文件的HTML代码,可选Referer参数
Public Function GetUrlFile(ByVal sUrl As String, Optional sReferer As String) As String
'On Error Resume Next
Dim dwSize As Long
Dim htmlBody As String
Dim dwBuf As String * 1024
If Len(sReferer) Then
hUrlFile = SendReferer(sUrl, sReferer)
Else
hUrlFile = SendUrl(sUrl)
End If
If hUrlFile = 0 Then Exit Function
Do
dwBuf = vbNullString
bRet = InternetReadFile(hUrlFile, dwBuf, 1024, dwSize)
htmlBody = htmlBody & Mid(dwBuf, 1, dwSize)
Loop While (dwSize <> 0)
If hUrlFile Then InternetCloseHandle hUrlFile
GetUrlFile = htmlBody
End Function
Public Function FileDownload(ByVal sUrl As String, ByVal sFile As String, Optional sReferer As String) As Boolean
Dim B(999) As Byte
Dim EndByte() As Byte
Dim bDoLoop As Boolean
Dim sReadBuffer As String
Dim lNumberOfBytesRead As Long
Dim FileID As Integer
Dim StrSize As String
Dim Size As Long
StrSize = String$(1024, " ")
FileID = FreeFile
If Len(sReferer) Then
hUrlFile = SendReferer(sUrl, sReferer)
Else
hUrlFile = SendUrl(sUrl)
End If
HttpQueryInfo hUrlFile, HTTP_QUERY_CONTENT_LENGTH Or INTERNET_INVALID_PORT_NUMBER, ByVal StrSize, Len(StrSize), 0
Size = CLng(Trim(StrSize))
If Size = 0 Then Exit Function
Open sFile For Output As FileID
Close FileID
Open sFile For Binary As FileID
Dim j As Long
For j = 1 To Size \ 1000
bDoLoop = InternetReadFileByte(hUrlFile, B(0), 1000, lNumberOfBytesRead)
Put FileID, , B
If Not CBool(lNumberOfBytesRead) Then Exit For
Next
If Size Mod 1000 <> 0 Then
Dim tmp As Long
tmp = (Size Mod 1000) - 1
ReDim EndByte(tmp)
bDoLoop = InternetReadFileByte(hUrlFile, EndByte(0), tmp + 1, lNumberOfBytesRead)
Put FileID, , EndByte
End If
Close FileID
If hUrlFile Then InternetCloseHandle hUrlFile
FileDownload = True
End Function
Private Function SendReferer(ByVal sUrl As String, ByVal sReferer As String) As Long
Dim Srv, Url, sHeader As String
Dim i As Long
i = InStr(sUrl, "/")
Srv = Mid(sUrl, i + 2, Len(sUrl) - (i + 1))
i = InStr(Srv, "/")
Url = Mid(Srv, i, Len(Srv) + 1 - i)
Srv = Left$(Srv, i - 1)
If hRequest Then InternetCloseHandle hRequest
If hConnect Then InternetCloseHandle hConnect
hConnect = InternetConnect(hNet, Srv, 0, vbNullString, "HTTP/1.0", INTERNET_SERVICE_HTTP, 0, 0)
If hConnect = 0 Then Exit Function
hRequest = HttpOpenRequest(hConnect, "GET", Url, "HTTP/1.0", vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
If hRequest = 0 Then Exit Function
sHeader = "Referer:" & IIf(Len(sReferer) = 0, sUrl, sReferer) & vbCrLf
bRet = HttpAddRequestHeaders(hRequest, sHeader, Len(sHeader), HTTP_ADDREQ_FLAG_REPLACE Or HTTP_ADDREQ_FLAG_ADD)
bRet = HttpSendRequest(hRequest, vbNullString, 0, vbNullString, 0)
SendReferer = hRequest
End Function
For Each WX In Web.Document.All
If WX.tagName = "IMG" Then
If WX.src="http://www.11111.com/1111.bmp" Then
Set CtrlRange = Web.Document.body.createControlRange()
CtrlRange.Add (WX)
CtrlRange.execCommand ("Copy")
SavePicture Clipboard.GetData, "c:\1.bmp"
Exit For
End If
End If
Next