最近有很多朋友都在讨论如何改变IE的代理 服务器 设置, 刚好我最近做的一个东西里面用到了这样的功能. 拿出来和大家共享一下. 用到的关键函数是wininet库里面的InternetSetOption. msdn里面有对它详细的介绍, 可以自己去看看. 当把参数dwOption设置为INTERNE最近有很多朋友都在讨论如何改变IE的代理服务器设置,

刚好我最近做的一个东西里面用到了这样的功能. 拿出来和大家共享一下.

用到的关键函数是wininet库里面的InternetSetOption. msdn里面有对它详细的介绍, 可以自己去看看. 当把参数dwOption设置为INTERNET_OPTION_SETTINGS_CHANGED的时候. 他就会促使IE在下一次打开网页的时候重新到注册表里面去取代理的设置信息.  所以我们就可以先将注册表里面的代理信息更改掉, 然后调用InternetSetOption函数, 从而达到使自己想要的代理设置马上生效的目的.    下面的函数可以实现改变IE的http代理服务器设置的目的. 里面加了少许的注释以帮助大家理解.

BOOL SetHttpProxy(CString ip, UINT port)

{

CString l_just;  l_just.Format("http=%s:%d", ip.LockBuffer(), port);     //下面的代码将注册表项HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ProxyServer  //的内容取出来

HKEY hKeyIn = HKEY_CURRENT_USER, hKeyOut;

if( ERROR_SUCCESS != RegOpenKeyEx(hKeyIn, "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", 0, KEY_CREATE_LINK | KEY_WRITE | KEY_READ | KEY_NOTIFY, &hKeyOut))

{

return FALSE;

}

ULONG regsize = 0;

if(ERROR_SUCCESS != RegQueryValueEx(hKeyOut, "ProxyServer", NULL, NULL, NULL, &regsize))

{

return FALSE;

}

LPBYTE pValue = new BYTE[regsize];

memset(pValue, 0x00, regsize);

if(ERROR_SUCCESS != RegQueryValueEx(hKeyOut, "ProxyServer", NULL, NULL, pValue, &regsize))

{

return FALSE;

}

CString oldproxy((char *)pValue);

delete [] pValue;  pValue = NULL;

//从注册表中读出来的数据格式为:http=111.111.111.111:80;ftp=222.222.222.222:21;......,

//如果你只想改变http的代理的话, 就只要把其中的111.111.111.111:80换成你想要的代理就行了,

//类似的你可以改变其他的代理.

//下面的代码就替换http代理成为参数所指定的代理.

int pos = 0;

//如果没有字符串中没有找到"http="说明用户没有设置http代理,这时候直接加在最前面.

if(-1 == (pos = oldproxy.Find("http=")))  {   pos = 0;  }

int pos1 = 0;

if(-1 == (pos1 = oldproxy.Find(";", pos)))  {   pos1 = oldproxy.GetLength();  }

oldproxy.Delete(pos, pos1 - pos);

oldproxy.Insert(pos, l_just);

if(ERROR_SUCCESS != RegSetValueEx(hKeyOut, "ProxyServer", 0, REG_SZ, (const unsigned char *)oldproxy.LockBuffer(), oldproxy.GetLength() + 1))

{   return FALSE;  }

RegCloseKey(hKeyOut);

//使设置生效

if(!InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0))  {   return FALSE;  }

return TRUE;

}

最后在使用此函数的时候不要忘记包含头文件 #include <wininet.h> 和lib: wininet.lib   如果代码有什么问题,欢迎大家指正. 作者的msn :   转自:领测软件测试网[http://www.ltesting.net]  原文链接:http://www.ltesting.net/ceshi/ruanjianceshikaifajishu/rjcskfyy/dotnet/2007/0701/113071.html

VC 修改IE代理服务器相关推荐

  1. vc++修改软件程序菜单实例

    2019独角兽企业重金招聘Python工程师标准>>> 修改软件一般使用exescope软件可以对软件界面,标题等的修改,这里介绍使用vc++修改cmenu菜单 .实例1. 使用CW ...

  2. 用VC++修改注册表----让我们踏出第一步(适合初学者)

    用VC++修改注册表----让我们踏出第一步(适合初学者) 转载自:www.csdn.net   开场白 你是不是非常期待通过自己的双手,写出一个有模有样的"系统修改(维护)工具软件"?我想答案应该是 ...

  3. vc 通过句柄修改窗口大小_VC应用(1)通过VC修改销售订单行项目的字段

    VC是SAP中非常重要的功能,过去多年来,我参与了不少使用VC的项目,我将通过多篇文章介绍VC的一些应用,本文介绍通过VC修改销售订单行项目的字段 01 概览 在销售订单创建时,对于可配置物料来说,不 ...

  4. VC++ 修改计算机名称 SetComputerName

    上一篇<VC++得到计算机名和用户名>讲解了如何使用GetComputerName和GetUserName来获取计算机名称及用户名.本篇来讲解用SetComputerName来修改计算机名 ...

  5. VC修改IE滚动条宽度

    VC下修改IE滚动条宽度,修改滚动条颜色是一个很简单的问题.但是IE的滚动条的宽度则是一件麻烦事,可能很多人遇到过这个问题.通过我一段时间的研究发现,IE浏览器的滚动条宽度是读取系统的滚动条默认宽度创 ...

  6. VC修改C++工程名称的方法

    (1)方法一  修改替换dsw,dsp文件关于文件名的地方 用文本编辑器打开Workspace文件xxx.dsw,将其中的"test"都改为"Test".然后再 ...

  7. 小米手机修改ip代理服务器,小米手机如何设置和更改静态IP地址

    想必大家都遇到过手机连接wifi正在获取ip地址,获取好长时间也连不上,或者连接时间长,需要花费很多时间去等待的情况吧.因为大多数路由器的默认设置是DHCP会对每个接入的设备自动分配一个IP地址,但有 ...

  8. excel中提取月份_在Excel中自动添加月份表

    excel中提取月份 Set up a Master sheet in your workbook, and add month sheets automatically, based on that ...

  9. Nginx的安装使用----反向代理服务器

    Nginx 代理服务器--使用比较多的为nginx代理服务器. 1.什么是nginx tomcat是web应用服务器. Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器, ...

最新文章

  1. 数据中心服务器网络接入技术 — VEB、VEPA、VN-Tag
  2. GNU/Linux下LVM配置管理以及快照卷、物理卷、卷组、逻辑卷的创建和删除
  3. centos7 hive mysql_CentOS7搭建Hive1.2.2+mysql5.7
  4. linux笔记_文件搜索命令
  5. Python中的traceback模块
  6. 28 MM配置-采购-采购申请-定义凭证类型
  7. 第一小节 初识面向对象
  8. java list 对象 json字符串_Java中Json字符串直接转换为对象的方法(包括多层List集合)...
  9. html中引入字体包
  10. storm风暴英雄 tempo_Tempostorm战队攻略:新版本下的终结者天赋
  11. Inc. magazine年度公司Evernote: 小小记事本如何风靡全球
  12. 全志A40I sdk wifi 模块移植说明文档
  13. 微信小程序:获取用户手机号
  14. 快速上手爬虫,有哪些方便实用的工具和服务?
  15. 第904题 水果成篮
  16. Java页面跳转失效_求助各位java大神,为什么表单提交之后跳转页面失灵
  17. Ubuntu中搜狗输入法安装
  18. 第四届“图灵杯”NEUQ-ACM程序设计人赛真题重现
  19. STM32F103实现激光测距传感器测距WT-VL53L0 L1
  20. 批量提取多个文件夹中的某类文件到指定文件夹中

热门文章

  1. 关于【腾讯 TEG云架构平台部( 云架平) 存储组】
  2. Java 泛型(Generics) 综述
  3. 语义网知识表示方法:RDF,RDFS与OWL
  4. 城市地摊重燃人间烟火,农村赶集却快熄灭烟火
  5. 电子沙盘开发教程 数字沙盘GIS大数据人工智能
  6. 推荐一份PHP程序员笔试题(附答案)
  7. 资源分享 | 仅需一个微软账号即可每天白嫖两小时Microsoft学习实验虚拟机云电脑...
  8. 打印机qr代码_自动将QR代码添加到网页中,以便从打印副本中轻松链接引用
  9. 二维离散变换由c语言编写,C++实现离散余弦变换(参数为二维指针)(示例代码)...
  10. 最大游戏工会YGG转型DAO,DAO能否成为下一个爆点?