我想在我的VB6程序中只下载 HTML代码。
Webbrowser
控制很好,但它会挂起,而且还有一些问题,比如需要禁用JavaScript,图片等等才能获得HTML
Inet
控件更好,但它是“buggy”
还有其他控制吗?
答案 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 CodeProject或here 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")