`
cxd65cxd
  • 浏览: 17017 次
社区版块
存档分类
最新评论

VB 获取 Internet Explorer_Server 里面的内容

阅读更多

VB 获取 Internet Explorer_Server 里面的内容
2009年08月22日
    最近几天,在群里有很多朋友询问如何通过“Internet Explorer_Server”类控件的句柄得到网页内容的问题。今天有时间,在网上搜索了一下,综合多方资料,我写了个模块用以解决上述问题。
    呵呵,请看过的朋友回个贴哦,增加一下我空间的人气。^-^哈哈,不多说了,言归正传,请看代码:
  '
  ' 模块代码:
  '
  Option Explicit'
  ' 要求:使用本模块时需要在工程中引用 Microsoft HTML Object Library。
  'Private Type GUID
  Data1 As Long
  Data2 As Integer
  Data3 As Integer
  Data4(0 To 7) As Byte
  End Type
  Private Declare Function GetClassName Lib "user32" _
  Alias "GetClassNameA" ( _
  ByVal hWnd As Long, _
  ByVal lpClassName As String, _
  ByVal nMaxCount As Long) As Long
  Private Declare Function EnumChildWindows Lib "user32" ( _
  ByVal hWndParent As Long, _
  ByVal lpEnumFunc As Long, _
  lParam As Long) As Long
  Private Declare Function RegisterWindowMessage Lib "user32" _
  Alias "RegisterWindowMessageA" ( _
  ByVal lpString As String) As Long
  Private Declare Function SendMessageTimeout Lib "user32" _
  Alias "SendMessageTimeoutA" ( _
  ByVal hWnd As Long, _
  ByVal msg As Long, _
  ByVal wParam As Long, _
  lParam As Any, _
  ByVal fuFlags As Long, _
  ByVal uTimeout As Long, _
  lpdwResult As Long) As Long
  Private Const SMTO_ABORTIFHUNG = &H2
  Private Declare Function ObjectFromLresult Lib "oleacc" ( _
  ByVal lResult As Long, _
  riid As UUID, _
  ByVal wParam As Long, _
  ppvObject As Any) As Long
  Private Declare Function FindWindow Lib "user32" _
  Alias "FindWindowA" ( _
  ByVal lpClassName As String, _
  ByVal lpWindowName As String) As Long'
  ' 函数:IEDOMFromhWnd。
  '
  ' 返回:一个 WebBrowser 窗口的 IHTMLDocument 对象接口。
  '
  ' hWnd 参数:WebBrowser 控件的句柄或 WebBrowser 控件所在窗口的句柄。
  '
  Function IEDOMFromhWnd(ByVal hWnd As Long) As IHTMLDocument
  Dim IID_IHTMLDocument As UUID
  Dim hWndChild As Long
  Dim lRes As Long
  Dim lMsg As Long
  Dim hr As Long    If hWnd  0 Then
  If Not IsIEServerWindow(hWnd) Then
  ' 查找一个 WebBrowser 控件。
  EnumChildWindows hWnd, AddressOf EnumChildProc, hWnd        End If
  If hWnd  0 Then
  ' 注册消息。
  lMsg = RegisterWindowMessage("WM_HTML_GETOBJECT")            ' 获取对象的指针。
  Call SendMessageTimeout(hWnd, lMsg, 0, 0, _
  SMTO_ABORTIFHUNG, 1000, lRes)            If lRes Then
  ' 初始化接口 ID。
  With IID_IHTMLDocument
  .Data1 = &H626FC520
  .Data2 = &HA41E
  .Data3 = &H11CF
  .Data4(0) = &HA7
  .Data4(1) = &H31
  .Data4(2) = &H0
  .Data4(3) = &HA0
  .Data4(4) = &HC9
  .Data4(5) = &H8
  .Data4(6) = &H26
  .Data4(7) = &H37
  End With                ' 利用指针 lRes 获取 IHTMLDocument 对象。
  hr = ObjectFromLresult(lRes, IID_IHTMLDocument, _
  0, IEDOMFromhWnd)            End If
  End If
  End If
  End Function
  Private Function IsIEServerWindow(ByVal hWnd As Long) As Boolean
  Dim lRes As Long
  Dim sClassName As String    ' 初始化缓冲区大小。
  sClassName = String$(255, 0)    ' 获取 hWnd 句柄拥有者的类名称。
  lRes = GetClassName(hWnd, sClassName, Len(sClassName))
  sClassName = Left$(sClassName, lRes)    IsIEServerWindow = StrComp(sClassName, _
  "Internet Explorer_Server", _
  vbTextCompare) = 0End Function
  Function EnumChildProc(ByVal hWnd As Long, lParam As Long) As Long
  If IsIEServerWindow(hWnd) Then
  lParam = hWnd
  Else
  EnumChildProc = 1
  End IfEnd Function
  '
  ' 举例:
  '
  ' 使用时先创建一个 IHTMLDocument 对象。
  '
  ' Dim objIES As New HTMLDocument
  '
  ' Set objIES = IEDOMFromhWnd(hWnd)
  '
  ' 这样 objIES 就能使用了。
  '
  '
  ' 窗体代码:
  Option Explicit
  Private Sub Form_Load()
  '创建一个 IHTMLDocument 对象。
  Dim objIES As New HTMLDocument
  Set objIES = IEDOMFromhWnd(hWnd) 'hWnd 这个东西你肯定有 N 种办法得到。    '应用。
  '例如下面是获得一个 WebBrowser 控件当前浏览网页的地址和该网页的 HTML 源码。
  Text1.Text = objIES.url & vbCrLf & vbCrLf & objIES.documentElement.innerHTML
  End Sub
分享到:
评论

相关推荐

    VB6一句话获取Webbrowser控件句柄【史上最强】

    正常的应该有3层句柄树(Shell Embedding》Shell DocObject View》Internet Explorer_Server),结果他只有Shell Embedding。 所以WebBrowser1.Navigate "https://www.baidu.com"就显示不出来了。可能和VB6的包装...

    VB网络编程实例

    ◆ 188.htm 使用vb获取网上邻居里的计算机名 ◆ 189.htm 使用VB建立Web Server ◆ 190.htm 使用Visual Basic开发通讯软件 ◆ 191.htm 使用资源工具包执行本地和远程重新启动 ◆ 192.htm ...

    VB.NET Developer's Guide(4574).pdf

    Internet Explorer and Netscape, but they also detect devices such as Palm Pilots and cell phones and generate appropriate HTML accordingly. 153_VBnet_TOC 8/16/01 1:13 PM Page xxiii xxiv Contents How ...

    VB编程资源大全(英文源码 网络)

    chatclnt.zip Client side of an internet chat program<END><br>9 , chatserv.zip Server side of an internet chat program<END><br>10 , hlink.zip Is a control that you can use to link your ...

    VB编程资源大全(英文源码 数据库)

    All users must have MSXML.dll version 3.0, and Internet Explorer 5.5. <END><br>47,DataCntl.zip Simple application that shows how to use the Data Control to connect to the Biblio.mdb database and ...

    VB编程资源大全(英文源码 控制)

    It can post messages and recieve messages through the internet.<END><br>8 , optiondemo.zip This example demonstrates how to create realistic Option Buttons in Visual Basic.<END><br>9 , mencrypt....

    VBScript大教程,Visual Basic 家族的最新成员

    VBScript大教程,Visual Basic 家族的最新成员,它将灵活的 Script 应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 Web 客户机 Script 和 Microsoft Internet Information Server 中的 Web 服务器 ...

    VB编程资源大全(英文源码 其它)

    array.zip A simple program that shows how a two-dimensional array works within a VB program.<END><br>70,Bubblesort.zip A simple Bubble Sort code that shows how the program works within a VB ...

    TAL Bar Code ActiveX Control控件

    TAL Bar Code ActiveX控件 向Access, VB, Web pages, ... 提供大量的运用实例:Access, Visual Basic, MS and Borland C++, Delphi, Excel, Word, Internet Explorer, CGI/Perl 和 Active Server Page (ASP)等。

    HTTP.Debugger.Pro.v3.5.Incl.Keymaker-ARN

    SoftX HTTP Debugger works with all popular web browsers (Internet Explorer, Mozilla FireFox, Opera, etc) and their plugins. Software developers can use it to view and analyze the ...

    vc++ 应用源码包_1

    p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库...

    vc++ 应用源码包_2

    p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库...

    vc++ 应用源码包_6

    p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库...

    vc++ 应用源码包_5

    p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库...

    vc++ 应用源码包_3

    p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库...

    Visual C++ 编程资源大全(英文源码 DLL)

    07.zip Handling VB strings (as part of an array of UDT) VB的串句柄(5KB)<END><br>8,08.zip Class for Dynamic DLL Loading 动态装入DLL的一个类(6KB)<END><br>9,pop3.zip CPop3Connection - an ...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的信息价值:不同的 Blog 选择不同的内容,收集和整理成为很多人关注的专业 Blog ——目前越来越多的人获取信息的来源是一些固定的 Blog 。...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    1.5.4 server explorer 54 1.5.5 在visual studio 2010中记录和使用宏 55 1.5.6 类图 57 1.5.7 应用程序生命周期管理 58 1.5.8 性能工具 60 1.6 小结 62 第2章 对象和visual basic 63 2.1 面向对象的...

Global site tag (gtag.js) - Google Analytics