我有个AP,使用CWebBrowser2的Navigate()打开了一个网页,现在的问题是如何能使得AP得到这个点击事件?

解决方案 »

  1.   

    重写CWebBrowser2的PreTranslateMessage()方法捕获鼠标事件,再发消息到主窗体BOOL CWebBrowser2::PreTranslateMessage(MSG* pMsg)
    {
    if(pMsg->message == WM_LBUTTONDOWN)
    {     ::PostMessage(AfxGetApp()->GetMainWnd()->m_hWnd,WM_LBUTTONDOWN,MK_LBUTTON,MAKEWPARAM(pMsg->pt.x,pMsg->pt.y));
    }
    return CWnd::PreTranslateMessage(pMsg);
    }
    不知道会不会有其他问题
      

  2.   

    我以前看到过一个 VB.net 的实现。CodeProject 上面的 。 他的确能截获所有,他好像是这样干的:document.all.a.onclick = function(.....)我试试看帮你找找吧。
      

  3.   

    找到了,下面是实现的代码片段:Private Sub webControl_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles webControl.DocumentCompleted
            Dim link As HtmlElement
            Dim links As HtmlElementCollection = webControl.Document.Links        For Each link In links
                If btnChange.Checked Then
                    link.SetAttribute("href", newLink)
                End If            link.AttachEventHandler("onclick", AddressOf LinkClicked)
            Next
        End Sub    Private Sub LinkClicked(ByVal sender As Object, ByVal e As EventArgs)
            Dim link As HtmlElement = webControl.Document.ActiveElement
            Dim url As String = link.GetAttribute("href")        MsgBox("Link Clicked: " & link.InnerText & vbCrLf & _
                        "Destination: " & url)
        End Sub
    首先在 DocumentComplete 消息处理:
    得到所有 link , 然后 attachEvent 的 onclick 消息 (注意处理link 中的 link的问题 )
    然后 , 然后就是写一个 onclick 的 响应函数。
    LinkClicked