分类: Delphi2003-08-02 18:42 1398人阅读 评论(0) 收藏 举报

本文其实.没有什么价值.写出来也是处于好玩.因为.最近闲的要命.所以总喜欢去些BBS聊天室之类的地方打发时间可是.突然发现这些地方总是喜欢记录IP真是麻烦.别人一跟踪马上就查出你的位置.实在是不爽.所以.就只好设置代理服务器.IE的设置是带这个功能的.所以很简单.只要设置就可以了.不过,实在觉得.那样太简单了.所以就想自己做一个程序实现.可是没什么眉目.不过突然想到腾讯的浏览器也有类似功能.可是.整个程序才916K,所以不用说肯定是有动态连接库的协助的.既然如此.那么只用导出来看看就知道了.于是.使用dumpbin这个PE工具Imports一下就全明白了象其他程序一样.通常USER32,Kernel32.GDI32....这些都不是今天的主角.Wininet.Dll才是今天的主角.这里导出了.三个函数.其中InternetsetOption才是关键因素.在MSDN中很快查到了.所以一切都很顺利.该函数的重点参数在第二个参数上面dwOption.所以继续参考MSDN就知道了INTERNET_OPTION_PROXY和INTERNET_OPTION_SETTINGS_CHANGED.第一个看名字也知道是设置代理.第二个是负责切换设置的.OK有了这些是否就OK了呢.是的基本OK不过不要忘记了这样做必须重启IE.因为IE也是依赖注册表地.所以去注册表找找.很快就明白了.HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings几乎谁都知道的Internet设置键.没什么可说的.知道了这些下面程序来实现就简单了.因为根本没什么技术.只是调用API和写注册表.
首先用Delphi来实现.delphi实现很简单.因为delphi的单元WinInet中就封装了该API调用的所有文档所以就简单多了.首先做一级面向对象的封装.一个对象TsetProxy,然后定义两个数据分别是代理主机和代理端口.然后一个负责调用的函数.代码如下:
unit Unit1;

interface

uses
   Registry,WinInet
type
  TSetProxy=class
   private
    { Private declarations }
    procedure SetReg(FMProxy:string);
  public
    { Public declarations }
    Proxy: string;
    port:string;
    constructor Create(Proxy,Port:string);
    procedure SetProxy();
//    procedure SetProxy(const fProxy,fPort: string);
end;
implementation
//实际设置代理
procedure TSetProxy.SetProxy;
var FProxy: string;
    Pinfo: INTERNET_PROXY_INFO;
begin
FProxy:=Format('%s:%s',[self.Proxy,self.port]);
Pinfo.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
Pinfo.lpszProxy := pchar(proxy);
InternetSetOption(nil, INTERNET_OPTION_PROXY, @Pinfo, SizeOf(PInfo));
InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);
self.SetReg(FProxy);
end;

//SetReg负责读写注册表
procedure TSetProxy.SetReg(FMProxy:string);
var
reg: Tregistry;
begin
reg:=Tregistry.Create;
  try
    reg.RootKey := HKEY_CURRENT_USER;
    if reg.OpenKey('/Software/Microsoft/Windows/CurrentVersion/Internet Settings', True) then
    begin
      reg.Writestring('ProxyServer', FMproxy);
      reg.WriteInteger('ProxyEnable', integer(true));
    end
  finally
    reg.CloseKey;
    reg.free;
  end;
end;
constructor TSetProxy.Create(Proxy,Port:string);
begin
self.Proxy:=Proxy;
self.port:=Port;
end;

end.

测试运行都恨正常.

IE 代理服务器设置程序实现的更多相关文章

  1. 一个CentOS7的开发环境部署,包括防火墙|VPN|多IP多网关|HTTP代理服务器设置等

    http://www.lenggirl.com/code/centos7.html layout: post title: "一个CentOS7的开发环境部署,包括防火墙|VPN|HTTP代 ...

  2. WPF 设置程序开机自动运行(+注册表项)

    #region 设置程序开机自动运行(+注册表项) RegistryKey rgkRun = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Micr ...

  3. CICS中设置程序常驻内存

    CICS中设置程序常驻内存 Permanent=no 修改为Permanent=yse --------------------- 对CICS的参数进行调节,RD中

  4. chrome代理服务器设置

    在百度的内网很难访问chrome的相关站点,如果安装一些chrome的插件很不方便,所以呢,研究了一下chrome浏览器的代理模式,FQ安装插件. Chrome设置代理服务器的方法大体有几种: 1. ...

  5. 设置程序版本等信息(可直接修改pro文件设置,但是更推荐使用rc文件设置)

    Qt版本:5.2.0 在.pro文件中设置版本等信息 VERSION = 1.2.3 QMAKE_TARGET_PRODUCT = 产品名称QMAKE_TARGET_COMPANY = 公司QMAKE ...

  6. VS2010中设置程序以管理员身份运行

    VS2010中设置程序以管理员身份运行 直接项目右键---属性---连接器---清单文件---uac执行级别 选择requireAdministrator 重新编译 即可 这样程序直接运行就拥有管理员 ...

  7. C# 设置程序最小化到任务栏右下角,鼠标左键单击还原,右键提示关闭程序

    首先设置程序最小化到任务栏右下角 先给窗口添加一个notifyIcon控件 为notifyIcon控件设置ICO图标(不设置图标将无法在任务栏显示) 给notifyIcon控件添加点击事件 然后是最小 ...

  8. Android eclipse 运行项目设置程序默认安装到SD卡

    Android eclipse 运行项目设置程序默认安装到SD卡  1.在Android手机启用USB调试功能 2.在Windows系统中打开命令提示符(开始菜单,选择运行,输入cmd回车即可),使用 ...

  9. c# 用代码来设置程序的PrivatePath

    原文:c# 用代码来设置程序的PrivatePath 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sweety820/article/detail ...

随机推荐

  1. Makefile:如何写目标依赖

    本文并不是Makefile的教程,仅是本人学习时的感悟. Makefile的基本格式 目标:依赖文件(or 目标) [tab]命令 目标: 是要生成的或操作的命令的索引 依赖: 是生成目标依赖的文件或 ...

  2. Eclipse怎么恢复默认界面

    Eclipse里面将界面恢复到默认状态: 1.选择Eclipse的工具栏里面的“窗口(Window)”,找到“复位透视图(Reset Perspective)”选项: 2.单击“复位透视图(Reset ...

  3. FlexPaper 里的pdf2json.exe 下载地址

    在使用FlexPaper 做在线阅读,需要使用到pdf2json.exe,将PDF转成JSON或者XML格式,网上很少下载的,现在提供一个下载的地址 http://pan.baidu.com/s/1i ...

  4. 20155203 2016-2017-3 《Java程序设计》第4周学习总结

    20155203 2016-2017-3 <Java程序设计>第4周学习总结 教材学习内容总结 1.父类和子类类似于集合和元素,不同的地方是子类可以拓展(extends)父类之外的方法. ...

  5. 20155212 2016-2017-2 《Java程序设计》第10周学习总结

    20155212 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 密码学基础 ava API支持多种加密算法.如MessageDigest类,可以构建MD5 ...

  6. 20155217 2016-2017-2《java程序设计》第一周学习总结

    20155217 2016-2017-2<java程序设计>第一周学习总结 浏览教材,根据自己的理解每章提出一个问题 java平台和java编程语言的区别? 怎样使用IDE来管理原始码与位 ...

  7. 20145226夏艺华 《Java程序设计》实验报告二

    实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 (一)单元测试 ...

  8. 基于 OpenCV 的人脸识别

    基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenC ...

  9. java 定义三分钟之前的时间

    public String getCurrentTime(){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ...

  10. java程序运行中如果出现异常未被处理,将会被抛到java虚拟机进行处理,程序中断运行后被挂起,在页面输出错误信息(不会输出到console)

    下面的代码中,因为我是使用 for (Iterator<Element> i = el.elements().iterator(); i.hasNext(); ) 迭代器遍历根节点的所有子 ...