问题: 如何获取 IE 浏览器窗口(或: WebBrowser 控件)的 HTML 源?
解答: '引用 Microsoft Internet Controls
'该函数是用来从本地获取 IE 窗口中,取得标题栏中含有 TitlePattern 字符的 IE 窗口的 HTML 源!
Public Function GetSourceFromIEBrowser(TitlePattern As String, Optional WithoutURLCommentInHeader As Boolean) As String
Dim x As New SHDocVw.ShellWindows
Dim i As Long
For i = 0 To x.Count - 1
If VBA.TypeName(x.Item(i).Document) = "HTMLDocument" Then
If x.Item(i).Document.Title Like TitlePattern Then
'读者要具备一些 HTML + javascript 的 Web 开发经验
'Debug.Print x.Item(i).Document.documentElement.outerhtml
GetSourceFromIEBrowser = VBA.IIf(WithoutURLCommentInHeader, "", "<!-- " & x.Item(i).LocationURL & " -->" & vbCrLf) & x.Item(i).Document.documentElement.outerhtml
Exit For
End If
End If
Next i
End Function
当然也可以用 Microsoft Internet Transfer Controls 或 Winsock Control 向 IE 窗口的 URL 所指的 WebServer(CGI)
再次发出请求(Request),并接收 WebServer 响应(Response),分析获取的字符串,去掉头信息,得到 HTML 源!(其实本题没必要) Visual Basic 专家门诊 2002 年 4 月
http://www.triaton.com.cn/cgi-bin/lb5k/topic.cgi?forum=4&topic=86&show=0
解答: '引用 Microsoft Internet Controls
'该函数是用来从本地获取 IE 窗口中,取得标题栏中含有 TitlePattern 字符的 IE 窗口的 HTML 源!
Public Function GetSourceFromIEBrowser(TitlePattern As String, Optional WithoutURLCommentInHeader As Boolean) As String
Dim x As New SHDocVw.ShellWindows
Dim i As Long
For i = 0 To x.Count - 1
If VBA.TypeName(x.Item(i).Document) = "HTMLDocument" Then
If x.Item(i).Document.Title Like TitlePattern Then
'读者要具备一些 HTML + javascript 的 Web 开发经验
'Debug.Print x.Item(i).Document.documentElement.outerhtml
GetSourceFromIEBrowser = VBA.IIf(WithoutURLCommentInHeader, "", "<!-- " & x.Item(i).LocationURL & " -->" & vbCrLf) & x.Item(i).Document.documentElement.outerhtml
Exit For
End If
End If
Next i
End Function
当然也可以用 Microsoft Internet Transfer Controls 或 Winsock Control 向 IE 窗口的 URL 所指的 WebServer(CGI)
再次发出请求(Request),并接收 WebServer 响应(Response),分析获取的字符串,去掉头信息,得到 HTML 源!(其实本题没必要) Visual Basic 专家门诊 2002 年 4 月
http://www.triaton.com.cn/cgi-bin/lb5k/topic.cgi?forum=4&topic=86&show=0
类似下面的:
GET http://192.168.0.1/ HTTP/1.0
Accept: *.*
Accept: text/html然后将收到的数据处理即可Sub Wsk_DataArrival(ByVal bytesTotal As Long)
'在收到数据时, 发生DataArrival 事件。
Dim webData As String
Wsk.GetData webData, vbString
TxtReceive.Text = TxtReceive.Text + webDataEnd Sub