百度,google加自己理解后,将所得方法总结一下:

方法1:修改注册表Software//Microsoft//Windows//CurrentVersion//Internet Settings下 ProxyEnable和ProxyServer。这种方法适用于局域网用户,拨号用户无效。

 1 public partial class Form1 : Form
 2    {       
 3
 4        //用于刷新注册表
 5        [DllImport(@"wininet",
 6        SetLastError = true,
 7        CharSet = CharSet.Auto,
 8        EntryPoint = "InternetSetOption",
 9        CallingConvention = CallingConvention.StdCall)]
10
11
12        public static extern bool InternetSetOption
13        (
14        int hInternet,
15        int dmOption,
16        IntPtr lpBuffer,
17        int dwBufferLength
18        );
19
20         private void btnStart_Click(object sender, EventArgs e)
21        {
22            RegistryKey pregkey;
23                pregkey = Registry.CurrentUser.OpenSubKey("Software//Microsoft//Windows//CurrentVersion//Internet Settings", true);
24                if (pregkey == null)
25                {
26                    Console.WriteLine("键值不存在");
27                }
28                else
29                {
30                    pregkey.SetValue("ProxyEnable", 1);
31                    pregkey.SetValue("ProxyServer", "代理地址");
32                    //激活代理设置
33                    InternetSetOption(0, 39, IntPtr.Zero, 0);
34                    InternetSetOption(0, 37, IntPtr.Zero, 0);
35                    webBrowser1.Navigate(txtweb.Text, false);
36                    // System.Threading.Thread.Sleep(10000);
37                }
38        }
39}

方法2: 修改注册表 Software//Microsoft//Windows//CurrentVersion//Internet Settings//Connections下以你拨号连接名为键的值,该键为二进制。这种方法适用于拨号用户。

public partial class FrmMain : Form
    {

[DllImport(@"wininet",
        SetLastError = true,
        CharSet = CharSet.Auto,
        EntryPoint = "InternetSetOption",
        CallingConvention = CallingConvention.StdCall)]


        public static extern bool InternetSetOption
        (
        int hInternet,
        int dmOption,
        IntPtr lpBuffer,
        int dwBufferLength
        );

//将值转换为注册表中的二进制值
public byte ChangeTobyte(char i)
        {
            byte key = 0;
            switch (i)
            {
                case '0': key = 48; break;
                case '1': key = 49; break;
                case '2': key = 50; break;
                case '3': key = 51; break;
                case '4': key = 52; break;
                case '5': key = 53; break;
                case '6': key = 54; break;
                case '7': key = 55; break;
                case '8': key = 56; break;
                case '9': key = 57; break;
                case '.': key = 46; break;
                case ':': key = 58; break;
                
            }
            return key;
        }

private void btnStart_Click(object sender, EventArgs e)
        {
             int i = ("代理地址").Length;
                byte[] key = new byte[50];
                char[] source = ("代理地址").ToCharArray();
                key[0] = 60;
                key[4] = 3;
                key[8] = 3;
                key[12] = (byte)i;
                for (int ii = 0; ii < source.Length; ii++)
                {
                    key[16 + ii] = ChangeTobyte(source[ii]);
                }
                string sDirectX = "";
                for (int k = 0; k < key.Length; k++)
                {
                    if (key[k] != 0)
                    {
                        sDirectX += key[k] + " ";
                    }
                }
                //MessageBox.Show(sDirectX);
                RegistryKey pregkey;
                pregkey = Registry.CurrentUser.OpenSubKey("Software//Microsoft//Windows//CurrentVersion//Internet Settings//Connections", true);
                if (pregkey == null)
                {
                    Console.WriteLine("键值不存在");
                }
                else
                {
                    pregkey.SetValue("拨号名字对应键值", key, RegistryValueKind.Binary);
                    //激活代理设置
                    InternetSetOption(0, 39, IntPtr.Zero, 0);
                    InternetSetOption(0, 37, IntPtr.Zero, 0);
                    webBrowser1.Navigate(txtweb.Text, false);
                    webBrowser1.Refresh();
                    
                }

        }
}

方法3: 使用c#自带的 webproxy类,使用这种方法可以获得目标网站的响应,但我不会把这种响应用IE反馈出来,有高手帮个忙么?
网上的代码说是MSDN的:
    HttpWebRequest myWebRequest=(HttpWebRequest)WebRequest.Create(" http://www.microsoft.com"/); 
    WebProxy myProxy=new WebProxy(); 
    // Obtain the 'Proxy' of the  Default browser.   
     myProxy=(WebProxy)myWebRequest.Proxy; 这行我编译不通过
    // Print the Proxy Url to the console. 
    Console.WriteLine("/nThe actual default Proxy settings are {0}",myProxy.Address); 
    try 
    { 
    Console.WriteLine("/nPlease enter the new Proxy Address that is to be set:"); 
    Console.WriteLine("(Example: http://myproxy.example.com:port/)"); 
    string proxyAddress; 
    proxyAddress =Console.ReadLine(); 
    if(proxyAddress.Length>0)


    Console.WriteLine("/nPlease enter the Credentials "); 
    Console.WriteLine("Username:"); 
    string username; 
    username =Console.ReadLine(); 
    Console.WriteLine("/nPassword:"); 
    string password; 
    password =Console.ReadLine(); 
    // Create a new Uri object. 
    Uri newUri=new Uri(proxyAddress); 
    // Associate the newUri object to 'myProxy' object so that new myProxy settings can be set. 
    myProxy.Address=newUri; 
    // Create a NetworkCredential object and associate it with the Proxy property of request object. 
    myProxy.Credentials=new NetworkCredential(username,password); 
    myWebRequest.Proxy=myProxy; 
    } 
    Console.WriteLine("/nThe Address of the  new Proxy settings are {0}",myProxy.Address); 
    HttpWebResponse myWebResponse=(HttpWebResponse)myWebRequest.GetResponse();

我改了下:

HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create("http://www.123cha.com");
            WebProxy myProxy = new WebProxy("代理地址", true);
            try
            {
               
                Console.WriteLine("/nThe Address of the  new Proxy settings are {0}", myProxy.Address);
                HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
              
                webBrowser1.DocumentStream = myWebResponse.GetResponseStream();

}
            catch { }

C# webbrowser 代理相关推荐

  1. webbrowser代理c#代码实现

    微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理,可不要用这个对抗广告联盟哦 You can change the ...

  2. C# WinForm开发系列 - WebBrowser

    介绍Vs 2005中带的WebBrowser控件使用以及一些疑难问题的解决方法, 如如何正确显示中文, 屏蔽右键菜单, 设置代理等; 收集的文章中有可能还带了一些Asp.Net开发使用微软的WebBr ...

  3. C# (转载)webbrowser专题(参考资料:https://www.cnblogs.com/blogpro/p/11458390.html)

    C# .Net 2.0实例学习:WebBrowser页面与WinForm交互技巧 2 Study Case 4:高亮显示 上一个例子中我们学会了查找文本--究跟到底,对Web页面还是只读不写.那么,如 ...

  4. C# webbrowser专题

    C# .Net 2.0实例学习:WebBrowser页面与WinForm交互技巧 2 Study Case 4:高亮显示 上一个例子中我们学会了查找文本--究跟到底,对Web页面还是只读不写.那么,如 ...

  5. C# WebBrowser 设置代理

    微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理 using System; using System.Collec ...

  6. C# WebBrowser 设置独立的代理

    近期需要对webbrower设置代理,找到了如下方案: 1. 对修改注册表,设置全局代理 这种方法限制在一个进程内只能设置或取消代理,而且是全局代理,对于部分不需要代理对功能会产生影响 2. 通过函数 ...

  7. C# WebBrowser 设置代理完全解决方案

    微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理,可不要用这个对抗广告联盟哦 You can change the ...

  8. 对WebBrowser控件设置代理

    我们用WebBrowser控件的时候,有时需要对它使用代理服务器. 一种常规的做法是修改全局IE代理设置.这种方式可以通过修改注册表实现,但这样做就把所有的IE引擎都给设置了,网上介绍的大都是这种方法 ...

  9. C# webBrowser 通过代理访问网页

    改变webBrowser1的代理 代码#region 改变代理[DllImport("wininet.dll", SetLastError = true)]private stat ...

最新文章

  1. PL/SQL 包的概念及创建使用
  2. 关于把世界坐标投射到屏幕上转换为屏幕2D坐标
  3. Oracle 原理:序列
  4. linux篇:CenterOS6和Center的区别
  5. 谈谈2018年区块链大事件
  6. CSS3及JS媒体查询教程
  7. 机器学习近年来之怪现状
  8. 计算机科学研究方向介绍
  9. android udp获取ip,安卓开发 局域网UDP获取服务器Ip地址
  10. 2017年3月份前端资源分享
  11. 【PL/SQL】异常处理
  12. 软考网络工程师备考经验
  13. NDS –无法加载数据(解决方案)–如何更新R4内核
  14. Java代码编程格式规范
  15. python可以查ip地址吗_python实现查询IP地址所在地
  16. Ubuntu16.04使用ninja编译安装LLVM
  17. 货郎问题java_货郎问题
  18. tkinter窗口美化功能介绍 第一章 内部美化功能
  19. C#中命名参数和可选参数
  20. 阻容感原件选择标规范

热门文章

  1. You have unstaged changes.
  2. 拾牙的2021年秋招总结(大概会有帮助?)
  3. gsettings-desktop-schemas : 破坏: mutter (< 3.31.4) 但是 3.28.4-0ubuntu18.04.2 正要被安装解决方案
  4. java创建临时文件_用Java创建一个临时文件
  5. Java System类console()方法及示例
  6. 干涉测量技术的应用_技术分享 | 石化行业测量仪表应用在线答疑
  7. 源码 连接mysql_MySql轻松入门系列————第一站 从源码角度轻松认识mysql整体框架图...
  8. 【ubuntu】ubuntu下用make编译程序报错找不到openssl/conf.h
  9. x86异常处理与中断机制(3)中断处理过程
  10. 进程常用指令 (从创建到回收 包含守护)