如何从其他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对象?子类化?
[解决办法]
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接口