如何自动化设置IE代理

如何自动化设置IE代理

(2009-04-12 21:59:29)
标签:

杂谈

分类:MSN搬家
      由于在实践中遇到需要自动设置代理服务器,使得使用更方便,把对这个问题研究的一些心得写下来,别人需要也可以参考下,自己时间长了忘了也可以翻看下。
      自动化地用程度设置IE代理服务器基本上可以有以下几个途径:
      1. 注册表导入。
      新建一个注册表文件,例如用以下为内容的注册表文件:
      Regedit4
      [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetSettings]
      "MigrateProxy"=dword:00000001
      "ProxyEnable"=dword:00000001
      "ProxyHttp1.1"=dword:00000000
      "ProxyServer"="http://ProxyServername:80"
      "ProxyOverride"="<local>"
      导入文件后,注册表将被更改,但此时IE的代理并未更改,需要将所有的IE进程关掉再启动才能生效。这也是这种办法的一个不足之处。
      2. 调用InternetSetOption接口
      可以参考: http://support.microsoft.com/kb/226473
    例程如下:
#include "stdio.h"
#include "windows.h"
#include "wininet.h"
#pragma comment(lib,"wininet.lib")
int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,
                  PSTR szCmdLine, int iCmdShow)
{
 //char buff[256] ="http=http://itgproxy:80";
 char buff[256]= "10.76.1.57:1437";
 int buffSize = MultiByteToWideChar(CP_ACP, 0, buff, -1, NULL,0);
 LPWSTR proxy = new WCHAR[buffSize];
 MultiByteToWideChar(CP_ACP, 0, buff, -1, proxy,buffSize);
 INTERNET_PER_CONN_OPTION_LIST   List;
 INTERNET_PER_CONN_OPTION        Option[2];
 unsignedlong                   nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
 
 Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
 Option[0].Value.pszValue = proxy;
 Option[1].dwOption =INTERNET_PER_CONN_FLAGS;
 Option[1].Value.dwValue = PROXY_TYPE_PROXY;
 Option[1].Value.dwValue |= PROXY_TYPE_DIRECT;
 // This option sets all the possible connection types for theclient.
 // This case specifies that the proxy can be used or directconnection is possible.
// Option[2].dwOption =INTERNET_PER_CONN_PROXY_BYPASS;
// Option[2].Value.pszValue ="<local>";
 
 List.dwSize =sizeof(INTERNET_PER_CONN_OPTION_LIST);
 List.pszConnection = NULL;
 List.dwOptionCount = 2;
 List.dwOptionError = 0;
 List.pOptions = Option;
 if(!InternetSetOption(NULL,INTERNET_OPTION_PER_CONNECTION_OPTION, &List,nSize))
  printf("InternetSetOption failed! (%d)\n",GetLastError());
 InternetSetOption(NULL,INTERNET_OPTION_SETTINGS_CHANGED,NULL,NULL);
 InternetSetOption(NULL, INTERNET_OPTION_REFRESH,NULL,NULL);
 //The connection settings for other instances of InternetExplorer.
 return 0;
}
   这种方法的好处在于运行后,代理即时生效。如果在程序里增加文件读写也可以使代理的设置可配置
  3.这应当说是一种混合方法,先用注册表导入,再调用
InternetSetOption(NULL,INTERNET_OPTION_SETTINGS_CHANGED,NULL,NULL);
InternetSetOption(NULL,INTERNET_OPTION_REFRESH, NULL,NULL);
这种方法看上去不是很纯洁,但也能达到即生效。而且有个好处是程序的编写变得很简单,对InternetSetOption的理解不需要多深入。
 
在java中调有C或C++产生出来的程序可以用Runtime.getRuntime().exec(exefile),这样就能在java中实再动态自动地设置IE的代理了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值