在Visual Basic 6中,Internet Transfer Control (ITC)作为跟踪程序的bugs的组件而被用户所熟知。但是有时候Internet Transfer 控件中提供的OpenURL方法并不能检索整个页面,同时,程序员发现在程序中使用这个控件的时候,Microsoft Office组建会伴随着程序自动运行,这样就会导致一些错误发生。
如果你需要检索HTML页面,最简单的方法是从WinINet API程序库中调用一些函数来完成。首先,将下面的说明放到你的项目中(一个代码模块),这样,就可以让程序知道需要WinINet程序库中的哪些函数:
Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Public Const INTERNET_OPEN_TYPE_DIRECT = 1
Public Const INTERNET_OPEN_TYPE_PROXY = 3
Public Const scUserAgent = "VB OpenUrl"
Public Const INTERNET_FLAG_RELOAD = &H80000000
Public 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
Public Declare Function InternetOpenUrl Lib "wininet.dll"
_
Alias "InternetOpenUrlA" (ByVal hOpen As Long,
_
ByVal sUrl As String, ByVal sHeaders As String, _
ByVal lLength As Long, ByVal lFlags As Long, _
ByVal lContext As Long) As Long
Public Declare Function InternetReadFile Lib "wininet.dll" _
(ByVal hFile As Long, ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long)
_
As Integer
Public Declare Function InternetCloseHandle Lib "wininet.dll"
_
(ByVal hInet As Long) As Integer
然后,我们可以得到包含了一份详细说明的URL文本文件,它显示在下面的函数中:
Dim s As String
Dim hOpen As Long
Dim hOpenUrl As Long
Dim bDoLoop As Boolean
Dim bRet As Boolean
Dim sReadBuffer As String * 2048
Dim lNumberOfBytesRead As Long
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, _
vbNullString, vbNullString, 0)
hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, _
INTERNET_FLAG_RELOAD, 0)
bDoLoop = True
Do While bDoLoop
ReadBuffer = vbNullString
Ret = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), _
lNumberOfBytesRead)
s = s & Left$(sReadBuffer, lNumberOfBytesRead)
I f Not CBool(lNumberOfBytesRead) Then bDoLoop = False
Loop
f hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
GetHTMLFromUrl = s
End Function