谁能实现不重新启动IE动态修改PROXY代理服务器? (100分)

  • 主题发起人 dali2000
  • 开始时间
D

dali2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我想通过一个程序,按一个按钮就实现设置代理服务器,按另一按钮就恢复系统默认设置
(不重新启动IE,动态修改),如何实现。最好给些代码。
 
  
 关于IE的一些设置在注册表的这个键中:
 HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings
 例如ProxyServer用于保存代理服务器的地址列表。
 用TRegistry对象修改即可。
  
 
这个是你需要的,MyIE等也是用这个原理。
记住,这个只是动态设置,不改变IE属性里面的代理设置。退出后就失效.
如果你需要真正的修改IE代理的设置而不是WebBrowser的设置,那么你只需要修改注册表中响应项目。

uses wininet, HTTPApp, HttpProxy;

procedure SetIEProxy(AProxy: String);
var
inf: INTERNET_PROXY_INFO;
len: DWord;
begin
if trim(AProxy) <> '' then
begin
inf.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
inf.lpszProxy := pchar(AProxy);
inf.lpszProxyBypass := nil;
len := sizeof(inf);
InternetSetOption(nil, INTERNET_OPTION_PROXY, @inf, len);
InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);
end
else
begin
inf.dwAccessType := INTERNET_OPEN_TYPE_DIRECT;
inf.lpszProxy := nil;
inf.lpszProxyBypass := nil;
len := sizeof(inf);
InternetSetOption(nil, INTERNET_OPTION_PROXY, @inf, len);
InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);
end;
end;
 
我需要真正的修改IE代理的设置而不是WebBrowser的设置,
需要修改注册表中响应项目,但不知道是哪些项
修改注册表中哪些项目就恢复系统默认设置?

 
找到“按一个按钮就实现设置代理服务器”的答案:
procedure TForm_main_proxy.proxy_change(str:string); //str为代理服务器的IP地址及端口
var
info:INTERNET_PROXY_INFO;
reg:TRegistry;
begin
try
reg:=TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
if reg.OpenKey('/Software/Microsoft/Windows/CurrentVersion/Internet Settings',False) then
begin
reg.Writestring('ProxyServer',str); //代理服务器的IP地址及端口
reg.Writestring('ProxyEnable', '1');//是否使用代理服务器
end;
reg.CloseKey;
reg.Free;

info.dwAccessType:=INTERNET_OPEN_TYPE_PROXY;
info.lpszProxy:=str;
InternetSetOption(nil,INTERNET_OPTION_PROXY,@info,1000);

InternetSetOption(nil,INTERNET_OPTION_REFRESH, nil,0);
InternetSetOption(nil,INTERNET_OPTION_SETTINGS_CHANGED, nil,0);
except
application.MessageBox('出错!','错误',mb_ok+mb_iconerror);
end;
end;

“按另一按钮就恢复系统默认设置”没有找到答案,
到底修改注册表中哪些项目就恢复系统默认设置?
 
嗨,其实就是需要你在修改以前记忆IE设置,然后你的“恢复”就是重新设置一次而已。
 
如果你用MYIE的话,她不就有这种功能。
 
顶部