如何避免使用Internet Transfer 控件

翻译|其它|编辑:郝浩|2004-01-18 13:36:00.000|阅读 1335 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

在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

利用这种方法,我们就可以避免使用ITC并且可以防止由于使用它而产生的错误。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP