我已经通过TShellWindows获得了正在运行的IE的IWebbrowser2接口,但当我试图通过:OLECheck(wb.Document.QueryInterface(IHTMLDocument2, iDoc2))来获得IHTMLDocument2接口时,却被提示“不支持此接口”,请问有什么办法可以获得IHTMLDocument2呢?

解决方案 »

  1.   

    好像使用OLECheck前就需要获得IHTMLDocument2接口。你这样试试:var
    iw:IWebbrowser2;
    doc:IHTMLDocument2;......
    //获得IWebbrowser2,你已经完成
    doc:=iw.document;
    这样就可以使用IHTMLDocument2接口了。
      

  2.   

    应该是doc:=iw.document as ihtmldocument2;不过,我没有测试。
    也许需要使用COM编程实现接口
    网上有不少这方面的文章
    MSDN上更权威
      

  3.   

    刚才查了下资料iw.Document.QueryInterface(IHTMLDocument2,idoc);
    if doc<>nil then ...
      

  4.   

    谢谢您及时的回复,我已经找到问题的原因了,不是上面的代码问题,由于TShellWindows获得的IWebbrowser2接口包括了资源管理器等其他非浏览器,所以在打开了资源管理器的情况下遍历TShellWindows.Item时,对于非浏览器接口就会OLECheck就会抛出错误。只要过滤掉这类接口实例就可以了。