WebBrowser控件是基于IE浏览器的,所以它的内核功能是依赖于IE的,相信做.NET的人都知道。

今天的主题,和上一篇文章应该是差不多的,都是通过代理来实现功能的。

请看下面的代码:

//1.定义代理信息的结构体

public struct Struct_INTERNET_PROXY_INFO 
        { 
            public int dwAccessType; 
            public IntPtr proxy; 
            public IntPtr proxyBypass; 
        };

//You can change the proxy with InternetSetOption method from the wininet.dll, here is a example to set the proxy

//这个就是设置一个Internet 选项,其实就是可以设置一个代理
        [DllImport("wininet.dll", SetLastError = true)] 
        private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);

//设置代理的方法

//strProxy为代理IP:端口
        private void InternetSetOption(string strProxy) 
        {

//设置代理选项

const int INTERNET_OPTION_PROXY = 38;

//设置代理类型
            const int INTERNET_OPEN_TYPE_PROXY = 3;

//设置代理类型,直接访问,不需要通过代理服务器了

const int INTERNET_OPEN_TYPE_DIRECT = 1;

Struct_INTERNET_PROXY_INFO struct_IPI;
            // Filling in structure 
            struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY;

//把代理地址设置到非托管内存地址中 
            struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy);

//代理通过本地连接到代理服务器上
            struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");

// Allocating memory

//关联到内存
            IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI));
            if (string.IsNullOrEmpty(strProxy) || strProxy.Trim().Length == 0)
            {
                strProxy = string.Empty;
                struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_DIRECT;
            }

// Converting structure to IntPtr

//把结构体转换到句柄
            Marshal.StructureToPtr(struct_IPI, intptrStruct, true);
            bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI));
        }

private void button1_Click(object sender, EventArgs e)
        {
                InternetSetOption("192.168.6.218:3128");

webBrowser1.Navigate("http://www.baidu.com", null, null, null);
        }

上面是代码是设置代理,要是取消代理怎么实现?

很简单,把调用InternetSetOption(string strProxy) 函数中的strProxy参数设置为空就行了。

例如:

private void button2_Click(object sender, EventArgs e)
        {
                InternetSetOption(string.Empty);

webBrowser1.Navigate("http://www.baidu.com", null, null, null);
        }

最新文章

  1. 【C#进阶系列】26 计算限制的异步操作
  2. CocoaPod安装和使用教程
  3. ytu 1059: 判别该年份是否闰年(水题,宏定义)
  4. HDU 5875 Function st + 二分
  5. windows进程/线程创建过程 --- windows操作系统学习
  6. IOS 作业项目(3) 霓虹灯效果
  7. yum --rpm包安装
  8. Error parsing XML: not well-formed (invalid token)
  9. winform 子窗体数据改变刷新父窗体 分类: WinForm 2014-05-06 18:30 246人阅读 评论(0) 收藏
  10. Node.js项目APM监控之New Relic
  11. HDFS的web接口
  12. Linux一些常用操作
  13. 【Linux】 Linux权限管理与特殊权限
  14. 【读书笔记】C++Primer---第一章
  15. python 绘制柱状图
  16. C#实现以太仿DApp合约编译、部署
  17. Hbase存储流程
  18. Unity3D中录制和输出wav文件
  19. 关于 TypeReference 的解释
  20. 51单片机的idata,xdata,pdata,data的详解(转)

热门文章

  1. IAP Store Kit Guide(中文)
  2. C#单链表(数据结构)
  3. 手写PE文件(二)
  4. imageNamed 与 imageWithContentsOfFile的区别
  5. web服务器 应用 服务器
  6. awk处理之案例一:awk 处理百分比的问题
  7. Android 4.4KitKat AudioRecord 流程分析
  8. Linux :Can't start up: not enough memory
  9. HDU5596/BestCoder Round #66 (div.2) 二分BIT/贪心
  10. pycharm控制台中文乱码问题