替代inet& webbrowser控件只检索HTML?

时间:2011-12-24 13:37:17

标签: vb6

我想在我的VB6程序中只下载 HTML代码。 Webbrowser控制很好,但它会挂起,而且还有一些问题,比如需要禁用JavaScript,图片等等才能获得HTML

Inet控件更好,但它是“buggy”

还有其他控制吗?

4 个答案:

答案 0 :(得分:4)

如果您只想下载页面的HTML,则可以轻松使用Winsock控件。

Private Sub Form_Load()
  Winsock1.Connect "stackoverflow.com", 80
End Sub

Private Sub Winsock1_Close()
  Winsock1.Close
End Sub

Private Sub Winsock1_Connect()
  Winsock1.SendData "GET /questions/8624871/vb6-alternative-to-inet-webbrowser-control HTTP/1.1" & vbCrLf & "Host: stackoverflow.com" & vbCrLf & vbCrLf
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  Dim s As String

  Winsock1.GetData s, vbString
  RichTextBox1.Text = RichTextBox1.Text & s
End Sub

答案 1 :(得分:3)

我的建议是在您的VB 6应用程序中托管WebKit.NET,就像使用任何其他.NET控件一样。

虽然它是一个.NET控件,这意味着它不能与VB 6本机开箱即用,但可以使用.NET 6开发的应用程序开发的控件。 Microsoft提供Interop Forms Toolkit作为两种语言之间的互操作机制。

基本上,您将使用其中一种.NET语言(它不必是VB.NET;您也可以使用C#)来创建包含UserControl的ActiveX DLL并将其注册为COM互操作。然后,您可以将此ActiveX控件添加到VB 6项目并挂接以处理它引发的事件。

您可以找到有关如何执行此操作的更完整示例here on CodeProjecthere on CodeGuru

事实上,这种方法实施起来并不容易。但是我怀疑它是你对捆绑WebBrowser控件的唯一替代方案,考虑到当VB 6很受欢迎并且没有人为VB 6开发新的控件时,IE几乎占据了浏览器市场的主导地位。

答案 2 :(得分:2)

您不需要API调用,不需要WinSock,不需要Inet,也不需要WebKit互操作。只需使用原生VB6代码即可轻松完成。这是一个很好的article by Karl Peterson示例代码。

答案 3 :(得分:1)

这是一个很好的代码,它甚至可以在ASP,VBScript中使用。

Function GetHTMLCode(strURL) As String
    Dim strReturn                   ' As String
    Dim objHTTP                     ' As MSXML.XMLHTTPRequest
    If Len(strURL)=0 Then EXIT FUNCTION
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    objHTTP.open "GET", strURL,False
    objHTTP.send                    'Get it.
    strReturn =objHTTP.responseText
    Set objHTTP = Nothing 
    GetHTMLCode = strReturn 
End Function

现在像这样调用这个函数(总是用协议写):

Msgbox GetHTMLCode("http://www.stackoverflow.com")