C# WebBrowser设置代理

WebBrowser控件是基于IE浏览器的,所以它的内核功能是依赖于IE.

code:
 
    class IEProxy
    {
        //设置代理选项
        private const int INTERNET_OPTION_PROXY = 38;
        //设置代理类型
        private const int INTERNET_OPEN_TYPE_PROXY = 3;
        //设置代理类型,直接访问,不需要通过代理服务器
        private const int INTERNET_OPEN_TYPE_DIRECT = 1;

        private string ProxyStr;

        //You can change the proxy with InternetSetOption method from the wininet.dll
        //这个就是设置一个Internet 选项。设置代理是Internet 选项其中的一个功能
        [System.Runtime.InteropServices.DllImport("wininet.dll", SetLastError = true)]
        private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);

        //定义代理信息的结构体
        public struct Struct_INTERNET_PROXY_INFO
        {
            public int dwAccessType;
            public IntPtr proxy;
            public IntPtr proxyBypass;
        }
       //设置代理的方法
       //strProxy为代理IP:端口
        private bool InternetSetOption(string strProxy)
        {
            int bufferLength;
            IntPtr intptrStruct;
            Struct_INTERNET_PROXY_INFO struct_IPI;

            //Filling in structure
            if (string.IsNullOrEmpty(strProxy) || strProxy.Trim().Length == 0)
            {
                strProxy = string.Empty;
                struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_DIRECT;

            }
            else
            {
                struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
            }
            //把代理地址设置到非托管内存地址中
            struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy);
            //代理通过本地连接到代理服务器上
            struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");
            bufferLength = Marshal.SizeOf(struct_IPI);

            //Allocating memory
            //关联到内存
            intptrStruct = Marshal.AllocCoTaskMem(bufferLength);

           //Converting structure to IntPtr
           //把结构体转换到句柄
            Marshal.StructureToPtr(struct_IPI, intptrStruct, true);
            return InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, bufferLength);
        }
        public IEProxy(string strProxy)
        {
            this.ProxyStr = strProxy;
        }
        //设置代理
        public bool SetIESettings()
        {
            return InternetSetOption(this.ProxyStr);
        }
        //取消代理
        public bool DisableIEProxy()
        {
            return InternetSetOption(string.Empty);
        }
    }
时间: 2024-08-01 19:33:19

C# WebBrowser设置代理的相关文章

如何单独的为webbrowser设置代理IP服务器?

问题描述 不影响其他的webbrowser以及IE 解决方案

java中如何设置代理

1 前言 有时候我们的程序中要提供可以使用代理访问网络,代理的方式包括http.https.ftp.socks代理.比如在IE浏览器设置代理. 那我们在我们的java程序中使用代理呢,有如下两种方式.直接上代码. 2 采用设置系统属性 import java.net.Authenticator; import java.net.PasswordAuthentication; import java.util.Properties; public class ProxyDemo1 { public

Edge浏览器怎样设置代理

  1.点击开始,然后选择"设置";   2.在弹出的菜单中,选择"网络和Internet";   3.点击"代理",然后填入代理服务器地址和端口,最后保存!   通过上面几个步骤的操作,我们就能很快在Windows10系统中为Edge浏览器设置代理了.

百度云管家怎么设置代理连接

  百度云管家怎么设置代理连接?只要在百度云管家登陆百度账号然后点击设置进入网络设置,把代理设置改成使用代理输入代理IP就可以连接了哦,下面就和小编一起来看看吧. 百度云管家代理连接设置方法: 打开百度云管家,登录你的百度账号.   点击右上角的倒三角图标.   在下拉菜单里选择设置.   之后就可以看到设置页面了,选择网络设置.   然后更改代理设置,选择HTTP代理选项.   之后就可以填入你的HTTP代理地址以及端口.   最后点击确定就可以完成代理设置了.   

android studio设置代理更新

我们都知道Android Studio是基于IDEA开发的,而我们写的每一个程序又都是有Gradle构建的,Gradle的优点可以说是很多,被很多程序员夸得没边,但是它有一个特点还是值得我们注意的.我们每一次点击这个按钮来执行我们的程序时,都会先调用这个来进行构建,这个和Eclipse上还是不一样的,因为Gradle构建的时候要联网,但是联网就联网呗,偏偏还要连接到墙外面的网络,我当初刚刚涉足移动开发的时候可被它给坑苦了,现在想一想真是蛋疼啊,信心满满的装好了高大上的Android Studio

给Android Studio设置代理

我们都知道Android Studio是基于IDEA开发的,而我们写的每一个程序又都是有Gradle构建的,Gradle的优点可以说是很多,被很多程序员夸得没边,但是它有一个特点还是值得我们注意的.我们每一次点击这个按钮来执行我们的程序时,都会先调用这个来进行构建,这个和Eclipse上还是不一样的,因为Gradle构建的时候要联网,但是联网就联网呗,偏偏还要连接到墙外面的网络,我当初刚刚涉足移动开发的时候可被它给坑苦了,现在想一想真是蛋疼啊,信心满满的装好了高大上的Android Studio

使用Axis访问webservice时应该怎么设置代理

问题描述 现用Axis客服端调用其他公司的webservice,由于公司网络的设置,即使网络通的时候亦无法调用,同样代码在自家电脑却可以调用,请问需要怎么设置代理才能够在公司调到webservice啊,谢谢!! 问题补充:不大明白,能说具体些麽?andilyliao 写道 解决方案 我建议你看看代理服务器的相关资料 首先你得机器无法访问到那个外网的webservice只要你们公司有其他可以访问这个webservice的机器 并且这个机器你可以连接上 这个机器就可以成为代理解决方案二:在公司找到一

ip-httpclient如何设置代理IP,我设置了貌似没有设置上,还是封我本地IP

问题描述 httpclient如何设置代理IP,我设置了貌似没有设置上,还是封我本地IP 百度上我也看过了跟我写的都一样,我用的是这句 client.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, httphost); 但好像没用,我还是老是被封本地IP 还有说 这么设置的 client.getHostConfiguration().setProxy(host, prox); 但是我设置上直接报错, 请教高手下如何设置httpcli

Java如何设置代理访问链接地址

一 使用系统属性来完成代理设置, 这种方法比较简单, 但是不能对单独的连接来设置代理: public static void main(String[] args) { Properties prop = System.getProperties(); // 设置http访问要使用的代理服务器的地址 prop.setProperty("http.proxyHost", "192.168.0.254"); // 设置http访问要使用的代理服务器的端口 prop.se