使用TWebBrowser,而不使用idHttp等控件的原因:因为有些网站用idHttp(URL)取不到需要的网页,只有在浏览器中点击超链接才能取到正确的网页,可能是因为网页中有特殊控制造成的。
我的代码如下,不需要显示TWebBrowser控件:
在有窗口停靠的情况下没有任何问题, 因为线程中没有TForm停靠,所以总是有问题,
var
  wb: TWebBrowser;
begin
  wb:= TWebBrowser.Create(nil);
  try
    wb.Navigate('http://cn.yahoo.com/');
    while wb.Busy or(wb.ReadyState<>READYSTATE_COMPLETE)do //这里wb.Busy恒为false, ReadyState恒为READYSTATE_INTERACTIVE
      Application.ProcessMessages;
    ShowMessage('网页开启完成'); //无法到达这里
  finally
    wb.Free;
  end;
end;

解决方案 »

  1.   

    你这个循环只有在while成功的条件下才能到达下面的提示代码执行吧。
    while的条件似乎设置的有点不合理吧。
      

  2.   

    To xjjrocker:
      没错,就是要while条件为true时到下一段代码,因为只有那两个条件都为true时页面加载才完成。因为下面的处理必须是加载完成后才能执行。
      

  3.   

    我这里用了这段代码,完全没问题,showmessage执行了。
      

  4.   

    你不是在子线程中测试的吧?
    线程里面测试要将showMessage这行屏蔽,不然就算能执行到这一行也会出错。
    在带有窗体的主线程里执行的时候是没有任何问题,但到线程中就执行不过去了