如:
  <html>   
  <head>     
  </head>   
  <body>   
  <a href="bb.htm">测试</a>   
  </body>   
  </html>
//=========================
当单击这个<a href="bb.htm">测试</a>
的时候,我怎么样得到这个“测试”两个字呢(即描述值)!
谢谢了呢。

解决方案 »

  1.   

    msdn.microsoft.com/workshop/browser/mshtml/tutorials/sink.asp
      

  2.   

    1、获得WebBrowser Control的DWebBrowserEvents2::DocumentComplete事件
    2、在DWebBrowserEvents2::DocumentComplete事件中根据IWebBrowser2::Document获得HTMLElementEvents2::onclick事件
    3、根据onclick的参数IHTMLEventObj *pEvtObj,得到鼠标的坐标,请参考:http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/mshtml/reference/events/htmldocumentevents2/htmldocumentevents2.asp
    4、通过IHTMLEventObj::srcElement得到触发单击事件的HTML标记
    5、根据IHTMLElement::innerText得到标记间的文本
      

  3.   

    楼上两位。谢谢了。
    但问题在于:
    1、<a href="bb.htm"><font>测试</font></a>
    这种情况的(就是href 的后面还有一个元素的情况)是按楼上的方法可以接收到DISPID_HTMLELEMENTEVENTS2_ONCLICK 这个消息的。能过楼上的方法是可以得到测试这两个字。
    2、<a href="bb.htm">测试</a>
    这种情况的直接链接的方式,IE是不会有DISPID_HTMLELEMENTEVENTS2_ONCLICK 这个消息过来的。只会有DISPID_BEFORENAVIGATE2 这个消息过来的。在这个消息里面的LPDISPATCH pDisp = pDispParams->rgvarg[6].pdispVal; 的pDisp 中QueryInterface 是得不到IHTMLEventObj *pEvtObj 这个接口。从而就得不到IHTMLEventObj::srcElement 标记呀。测试两个字也就得不到呢。我现在遇到的就是第二种情况。。楼上两位能不能再告诉我呢?或者用什么方法在DISPID_BEFORENAVIGATE2 这种情况下得到标记呢?谢谢了。
      

  4.   

    第一种情况,你是通过什么得到DISPID_HTMLELEMENTEVENTS2_ONCLICK的?
      

  5.   

    第一种方法我以前就用类似于你的方法解决了。代码基本上和你告诉我的方法类似。第二种方法是我测试的时候发现的。不会DISPID_HTMLELEMENTEVENTS2_ONCLICK有这个消息过来。呵:)不过楼上兄。已经解决了。
    DISPID_BEFORENAVIGATE2 这个消息内的参数6有pDispatch 可以获取IWEBBROWSE,进而得到
    IDecoment2 再用pDoc->get_activeElement(&pElement);
     pElement->get_innerText(&bstrInnerText);
    就可以了。:)
    不过还是谢谢你了。