我的问题如下:    我现在想拦截百度主页中“把百度设为主页”这个链接的点击事件,该链接的代码如下:
<a onClick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.baidu.com')" href="http://utility.baidu.com/traf/click.php?id=215&url=http://www.baidu.com">把百度设为主页</a>即,点击该链接时会弹出一个设置该页面为主页的对话框,我想在显示这个对话框之前就能收到这个事件。
我用连接点的方法去试图拦截DISPID_HTMLELEMENTEVENTS2_ONCLICK事件,拦截是拦截到了,但是这个事件是在设置主页的对话框弹出来之后并处理掉才拦截到的。时序上稍微晚了。所以我想要大家帮助的问题是:如何在这个设置主页对话框弹出之前就截获到这个事件

解决方案 »

  1.   

    我在http://topic.csdn.net/t/20060922/17/5041814.html这个帖子中找到这么一个方法:
    1、获得WebBrowser   Control的DWebBrowserEvents2::DocumentComplete事件   
     2、在DWebBrowserEvents2::DocumentComplete事件中根据IWebBrowser2::Document获得HTMLLinkElementEvents::onclick事件  。
    但我不理解的是HTMLLinkElementEvents::onclick这个事件如何“获得”,如果能有段示例代码就好了。
      

  2.   

    IHTMLDocumentX 有一个onclick 的属性.在 DWebBrowserEvets2::DocumentComplete 中装载 onclick 就可以捕获.
      

  3.   


    如何装载?给个sample程序吧。。谢谢。
      

  4.   

    void OnEditCut(); 
    void OnEditCopy(); 
    void OnEditPaste();
    void OnEditSelectAll(); 
    void OnEditUndo();ON_COMMAND(ID_EDIT_CUT, OnEditCut)
    ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
    ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
    ON_COMMAND(ID_EDIT_SELECT_ALL, OnEditSelectAll)
      ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)void CXXView::OnEditCut()  
    {
    ExecWB(OLECMDID_CUT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);   
    }void CXXView::OnEditCopy()  
    {
    ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);   
    }void CXXView::OnEditPaste()  
    {
    ExecWB(OLECMDID_PASTE, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);   
    }void CXXView::OnEditSelectAll()  
    {
    ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);  
    }void CXXView::OnEditUndo()  
    {
    ExecWB(OLECMDID_UNDO, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);  
    }