我是内网用户,当我的IE设置代理服务器:'135.35.6.111:808'时,IE可以访问外网,比如访问网页 
http://www.ynzsjm.com/Proxy.aspx 但是当我取消或修改IE代理服务器IP为一个错误的IP地址,然后用下面的代码来重新设置正确的代理服务器,结果是WebBrowser1并不能正常访问网页,那么,哪里不对? 
  FProxy:=Format('%s:%s',['135.35.6.111','808']);  //111
  Pinfo.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
  Pinfo.lpszProxy := '135.35.6.111';    //PChar Type
  InternetSetOption(nil, INTERNET_OPTION_PROXY, @Pinfo, SizeOf(PInfo));
  InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);
  WebBrowser1.Navigate('http://www.ynzsjm.com/Proxy.aspx');
我只想为我的WebBrowser组件设置代理服务器,不想影响别的IE的窗口,所以我想不应去写注册表,这个思路有什么问题? 
 

解决方案 »

  1.   

    加一句Pinfo.lpszProxyBypass:=nil;试试:  FProxy:=Format('%s:%s',['135.35.6.111','808']);  //111
      Pinfo.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
      Pinfo.lpszProxy := '135.35.6.111';    //PChar Type
      Pinfo.lpszProxyBypass:=nil;
      InternetSetOption(nil, INTERNET_OPTION_PROXY, @Pinfo, SizeOf(PInfo));
      InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);
      WebBrowser1.Navigate('http://www.ynzsjm.com/Proxy.aspx');
      

  2.   

    InternetSetOption对webbrowser不起作用吧
    webbrowser还是用的注册里的代理服务器地址
      

  3.   

    InternetSetOption只对当前的进程有影响
      

  4.   

    你的程序就是你的进程,就是当你的程序调用原生的windows Api来访问网络的时候
    设置的那个代理服务器才有效
    Webbrowser调用的是com server和你的进程设置无关,不受那个影响
      

  5.   

    但是非常奇怪的是,如果我的IE已经设置了代理服务器,我先让WebBrowser1访问一个Internet上的网页A,
    如http://www.yuneach.com,成功了,然后执行上面的代码,此时WebBrowser1竟然不能访问http://www.ynzsjm.com/Proxy.aspx了。如果是与我的进程设置无关的话,就应当不会影响WebBrowser1才对啊?