写个ATL用IWebBrowser2获取网址,会多次调用Invoke得到多个网址,请问这个问题应该怎么解决?我只想得到地址栏中的地址,麻烦知道的朋友告诉我一声,谢谢了

解决方案 »

  1.   

    解决了,说一下我的方法吧
    我用的是ATL当访问第一次转向(在地址栏输入网址)时,收到DISPID_BEFORENAVIGATE2,然后设置一个标记,当标记生效时就不处理
    文档加载完毕后收到DISPID_DOCUMENTCOMPLETE,就取消标记就可以了
    还有一个问题是如果是JS引导的转向不知道能不能检测出来 给个人来接分吧
      

  2.   

    日,刚才回复的居然服务器无法响应问题解决了,方法在上一贴中,但在回复的时候出现服务器无法响应,草尼玛CSDN,不想再打解决问题的方法了,累人!
      

  3.   

    日,第二次回复的居然又是服务器无法响应问题解决了,方法在上两贴中,但在回复的时候出现服务器无法响应,草尼玛CSDN,不想再打解决问题的方法了,累人!
      

  4.   

    你在什么时候取的?OnDocumentComplete?如果网页含有框架,这个会触发多次。
    判断下IDispatch是否等于WebBrowser的IDispatch
      

  5.   

    你在什么时候取?OnDocumentComplete?如果页面有框架,那这个可能触发多次。你要判断IDispatch是否等于webbrowser的IDispatch
      

  6.   

    好,为了这位朋友我再打一次吧,我在DISPID_BEFORENAVIGATE2取的。有框架的话会调用多次
    我的方法是设置标记,
    收到DISPID_BEFORENAVIGATE2后设置一个标记,当标记生效后就不执行下面的语句 
    然后收到DISPID_DOCUMENTCOMPLETE取消标记就可以了
    我之前也判断IDispatch是否等于webbrowser的IDispatch,但在pDispParams取出变量的时候出错了,不知道是什么错误,一读取就崩溃
      

  7.   

    好,为了这位朋友我再打一次吧,我在DISPID_BEFORENAVIGATE2取的。有框架的话会调用多次
    我的方法是设置标记,
    收到DISPID_BEFORENAVIGATE2后设置一个标记,当标记生效后就不执行下面的语句 
    然后收到DISPID_DOCUMENTCOMPLETE取消标记就可以了
    我之前也判断IDispatch是否等于webbrowser的IDispatch,但在pDispParams取出变量的时候出错了,不知道是什么错误,一读取就崩溃