彩票走势图

如何实现从hwnd获得webbrowser组件

转帖|其它|编辑:郝浩|2008-09-24 11:48:13.000|阅读 2178 次

概述:如何实现从hwnd获得webbrowser组件

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Option Explicit

Private Type UUID
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(0 To 7) As Byte
End Type

Private Declare Sub ZeroMemory()Sub ZeroMemory Lib "kernel32.dll" Alias "RtlZeroMemory" ( _
        Destination As Any, _
       ; ByVal Length As Long)

Private Declare Function FindWindowA()Function FindWindowA Lib "user32" ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As Long) As Long

Private Declare Function FindWindowExA()Function FindWindowExA Lib "user32" ( _
        ByVal hWnd1 As Long, _
        ByVal hWnd2 As Long, _
        ByVal lpsz1 As String, _
        ByVal lpsz2 As Long) As Long

Private Declare Function ObjectFromLresult()Function ObjectFromLresult Lib "oleacc" ( _
        ByVal lResult As Long, _
        riid As UUID, _
        ByVal wParam As Long, _
        ppvObject As Any) As Long

Private Declare Function RegisterWindowMessageA()Function RegisterWindowMessageA Lib "user32" ( _
        ByVal lpString As String) As Long

Private Declare Function SendMessageTimeoutA()Function SendMessageTimeoutA Lib "user32" ( _
        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 Declare Function EnumWindows()Function EnumWindows Lib "user32" ( _
        ByVal lpEnumFunc As Long, _
        lparam As Long) As Boolean

Private Declare Function RealGetWindowClassA()Function RealGetWindowClassA Lib "user32" ( _
        ByVal hwnd As Long, _
        ByVal psztype As String, _
        ByVal cchtype As Long) As Long

Private Declare Function ShellExecuteA()Function ShellExecuteA Lib "shell32.dll" ( _
        ByVal hwnd As Long, _
        ByVal lpOperation As String, _
        ByVal lpFile As String, _
        ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As Long

Private Declare Sub Sleep()Sub Sleep Lib "kernel32" ( _
  ;      ByVal dwMilliseconds As Long)

'// FindWindow args
Private Const arg  As String = "ieframe"
Private Const arg1 As String = "shell docobject view"
 Private Const arg2 As String = ";Internet Explorer_Server"

'// GetObject args
Private Const WM_HTML_GETOBJECT As String = "WM_HTML_GETOBJECT"

Private HTML    As HTMLDocument
Dim Handle      As Long
Dim IsIE        As String

Public Sub doLogin()Sub doLogin()
    IsIE = vbNullString
    IsIE = Space$(10)
    EnumWindows AddressOf Frames, 0
End Sub

Public Sub GoWeb()Sub GoWeb(ByVal address As String, Optional Timeout As Long)
    ShellExecuteA 0, "open", address, "", vbNullString, 1
    Sleep Timeout
End Sub

Public Function Generate()Function Generate(ByVal hwnd As Long) As IHTMLDocument
   
    Dim ID     As UUID
    Dim lngReg As Long
    Dim lngHnD As Long
   
    lngHnD = RegisterWindowMessageA(WM_HTML_GETOBJECT)
   
    With ID
       ; .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
   
    Call SendMessageTimeoutA(hwnd, lngHnD, 0, 0, &H2, 2000, lngReg)
    Call ZeroMemory(ID, Len(ID))
    
    '从句柄获得webbrowser对象
    Call ObjectFromLresult(lngReg, ID, 0, Generate)

End Function

调用的方法:
    Dim xDoc As IHTMLDocument
      
    Set xDoc = Generate(hwnd)


标签:

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

文章转载自:个人博客

为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP