procedure showJs();
begin
//这句意思是WebBrowser执行wb里js脚本返回的值。wb里有个js方法叫getAllPass
showmessage(wb.OleObject.document.parentWindow.getAllPass('dsfsdfsdf','dssaas2','DDAWDDSDASD','010001'));
end;procedure Tform_Main.btn_FailClick(Sender: TObject);
var
id:dword;
begin
showJs();//在主线程里是可以正确执行的。
    CreateThread(nil,0,@showJs,nil,0,id);//在多线程里 就会出现这个异常 (Access violation at address 68A98099 in module 'mshtml.dll'. Read of address 000001EC)
end;{我就是想,在多线程里执行 wb.OleObject.document.parentWindow.getAllPass('dsfsdfsdf','dssaas2','DDAWDDSDASD','010001')获取,我想要的值,但是就是出现以上异常。。快一天了。百度/google都没搞定。只能来csdn拜托大牛了!小弟谢谢啦!怎么解决?}

解决方案 »

  1.   

    加上coInitialize试下,还有最好不要在线程中用ShowMessage吧用MessageBox(0,....);
    uses ActiveX;
     
    procedure showJs();
    begin
      coInitialize(nil);
      try
      //这句意思是WebBrowser执行wb里js脚本返回的值。wb里有个js方法叫getAllPass
     showmessage(wb.OleObject.document.parentWindow.getAllPass('dsfsdfsdf','dssaas2','DDAWDDSDASD','010001'));
      finally
        CoUninitialize;
      end;
    end;
      

  2.   


    老大,这个我加过了呀。不行呢。~~~~~ 我只是把我代码简化下,这个就类似小demo,加了还是出现相同的异常!
    大能!!
      

  3.   

    Access violation at address 68A98099 in module 'mshtml.dll'. Read of address 000001EC这个错误提示说明,发生错误的代码是在mshtml.dll里这说明,你在这句话:
    wb.OleObject.document.parentWindow.getAllPass('dsfsdfsdf','dssaas2','DDAWDDSDASD','010001')中调用时有问题传递参数错误或者是无法获取的主线中的某些资源。那么关键性的问题就可能存在于这个wb.OleObject.document.parentWindow 这个windows是不是存在? 你可以考虑使用其他技术。