读书人

怎么从其他EXE窗口上取得webbrowser控

发布时间: 2012-03-21 13:33:15 作者: rapoo

如何从其他EXE窗口上取得webbrowser控件对象,要求支持URL转向监控。
用IE打开的页面,这个可以很简单的实现
可以用:RegisterWindowMessage("WM_HTML_GETOBJECT"),获得htmldocument
Dim WithEvents Doc As MSHTML.HTMLDocument

Dim WithEvents Web2 As InternetExplorer
Dim WithEvents Web1 As WebBrowser_V1

有什么办法可以获得InternetExplorer对象
查找到的类名是:"Internet Explorer_Server","Shell DocObject View"

如果可以根据句柄得到WebBrowser_V1或InternetExplorer或对象,或直接转换为webbrowser对象就好了。

主要是想用以下的事件:
Private Sub Web1_BeforeNavigate(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, Cancel As Boolean)

End Sub

Private Sub Web1_FrameBeforeNavigate(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, Cancel As Boolean)

End Sub

Private Sub Web1_NewWindow(ByVal URL As String, ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, Processed As Boolean)

End Sub


-----

Private Sub Web2_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)

End Sub

Private Sub Web2_NavigateComplete2(ByVal pDisp As Object, URL As Variant)

End Sub

Private Sub Web2_NewWindow2(ppDisp As Object, Cancel As Boolean)

End Sub

[解决办法]
介个...

BHO能做,不知道这个办法

可以用:RegisterWindowMessage("WM_HTML_GETOBJECT"),获得htmldocument

这个怎么弄?registerwindowmessage得到的是消息句柄,怎么到htmldocument对象?子类化?
[解决办法]

VB code
Private Sub Form_Load()Dim ret As Long, ret2 As LongDim strA As Stringret = FindWindow("IEFrame", vbNullString)ret2 = GetWindowTextLength(ret)strA = Space(ret2 + 2)ret2 = GetWindowText(ret, strA, ret2)Debug.Print strASet ywDoc = GetDocByInternet_Explorer_Server(ret)Set ywDoc = GetDocByIe(ret)End Sub
[解决办法]
http://www.vckbase.net/document/viewdoc/?id=288

参考

通过句柄获得一个HTMLDOCUMENT接口

读书人网 >VB

热点推荐