在多线程中使用IHTMLDocument2 指针会出现错误,而不用多线程,则不会?有人知道怎么解决吗?

解决方案 »

  1.   

    我在线程里面用IHtmlDocument2(WebBrowser1.Document).Body.OuterText直接报一个指针错误!但是在主窗体这样用就不会。
      

  2.   

    这一句之前我用webbrowser1我已经create了,而且之前webbrowser1.navigate()也是没错的。
      

  3.   

    问题:     在多线程中使用IHTMLDocument2 指针会出现错误解决:    使用列集,散集来传递IHTMLDocument2 指针。    声明全局变量IStream *pStream;1、    将pHTMLDocument指针传递给pStream。    CoMarshalInterThreadInterfaceInStream(IID_IHTMLDocument2, pHTMLDocument, &pStream);     HANDLE hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Capture, this, 0, NULL);2、     将pStream传递给pHTMLDocument指针就可以使用了。UINT CCaptureDlg::Capture(LPVOID p)
    {
     CoInitialize(NULL);  CCaptureDlg * self = (CCaptureDlg *) p; IHTMLDocument2 *pHTMLDocument; HRESULT hr = ::CoGetInterfaceAndReleaseStream(self->pStream, IID_IHTMLDocument2, (void**)&pHTMLDocument ); BSTR   bstr_title, bstr_url;
     pHTMLDocument->get_title(&bstr_title);
     pHTMLDocument->get_URL(&bstr_url);...}这个有人帮我翻译成Delphi吗?
      

  4.   

    放在线程中,可能你内容还没加载完成就在访问那个接口了,此时接口可能就是nil
    在主程序中,你访问的到,是因为主程序本身阻塞在,会等到一条指令结束。