C# 为WebBrowser设置代理,打开网页

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);
        }

C# 为WebBrowser设置代理,打开网页,布布扣,bubuko.com

时间: 2024-08-03 23:31:51

C# 为WebBrowser设置代理,打开网页的相关文章

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

微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理,可不要用这个对抗广告联盟哦 You can change the proxy with InternetSetOption method from the wininet.dll, here is a example to set the proxy: using System.Runtime.InteropServices; Public struct Stru

屏蔽webBrowser打开网页的弹窗

<strong>1.  屏蔽打开网页时的"JS错误"弹窗</strong> 方法I:  将WebBrowser的"Silent"属性设置为"TRUE" 方法II: 代码实现 m_web.put_Silent(TRUE);    //m_web为web控件变量 <strong>2.  屏蔽打开网页时的其他弹窗</strong> 方法I: 重载Web控件所在窗口的方法"OnAmbientPro

用webBrowser打开网页出现脚本错误怎么办

当IE浏览器遇到脚本错误时,在浏览器左下角会出现一个黄色图标,点击可以查看脚本错误的详细信息,并不会有弹出的错误信息框.我们在用webBrowser编写的程序打开网页,遇到脚本有问题是,会弹出一个错误提示框,需要确认后才能够进行执行.如果我们设计的程序是用来自动处理网页的,那么在出现这种情况时,程序运行被打断,需要人工干预.这显然无法达到我们的要求. 那么,在使用webBrowser打开网页遇到脚本错误时如何处理才能让程序无干扰的自动运行呢? webBrowser给我们提供了一个属性:Scrip

关于Burpsuite设置代理后打不开网页

很多新手在刚用burpsuite时,在设置好网页网络代理后,发现打不开网页,这其实是一个简单的问题,因为burpsuite是默认将拦截开的,也就是,在你设置好代理后,你打开网页,它已经默认将请求包拦截下来了. 那个intercept is on 表示拦截是开的,这时你若想正常打开网页则,按一下那个即可,就会变成 ps:还有一种证书与证书不信任的问题,别的博客已经有了详细的解答

解决 winform打开网页 和WebBrowser打开链接360误报拦截的问题

以下方法我已经在自己电脑上验证通过,其他电脑并未测试,请广大读者自行验证并反馈,如果有更好的方法请指教. 在winform中如果使用这种方法弹出网页,例如这样 Process.start("http://www.xgjxc.top"); 或者另外如果winform中嵌入了一个webbrowser控件,加载了一个网页,例如这样 this.webBrowser1.Navigate("http://www.xgjxc.top/home.html“); 网页中有个超链接,例如这样 &

写了一个Mac快速设置、打开和关闭Web代理的Shell命令

缘由(痛点) 每次在Mac上设置Web代理,都需要点开"系统偏好设置 -- 网络 -- 高级 -- 代理",然后分别设置Web代理(HTTP)和安全Web代理(HTTPS),设置完后,还要点"好 -- 应用".如果要关闭Web代理也是如此,只是点到代理设置面板后,只需要取消勾选Web代理和安全Web代理. 个人觉得这种操作很繁琐,对于一个经常需要改Web代理的人来说,这简直是灾难性的重复操作.所以这段时间学了些Linux Shell脚本编程的知识,写了两个Shell

Win2003打开网页时总是提示添加网址到信任站点的设置方法

在WIN2003系统中,我们打开网页,或打开网站,或浏览网页时,老是跳出一个窗口提示"添加网址到信任站点","网页老是提示添加信任"或"2003每打开一次网页都要加入受信任站点"或"win2003提示信任站点"或"打开网页提示把此网页加入可信站点怎么处理"或"win2003打开网页提示"等等描述都是对这个问题的反应. Win2003的操作系统,的确比其它操作系统在安全上增加了不少,这是为

【安卓小技巧】WebView设置在本页面打开网页,而不是启动浏览器打开

使用WebView可以巧妙的在安卓APP中嵌入HTML页面, WebView wb = (WebView) findViewById(R.id.web); //找到WebView控件 wb.setWebViewClient(new WebViewClient()); //防止用浏览器打开网页 wb.loadUrl(“http://www.baidu.com"); //导入页面 轻松搞定!

Inno Setup设置在安装Finished页面,点击finish后打开网页

在安装的最后一个页面FinishPage中点击Finished然后打开一个网页 这个功能貌似很简单,不就是在点击finish按钮给它绑定事件,问题立马解决. 在普通的桌面应用程序开发中的确是这样做的,可是这里是InnoSetup 这个事件不是你能控制的, 所以我们应该换一种思维,点击finish后,相当于程序全部安装完毕了,而在InnoSetup的脚本中,我们可以获取到这个状态 先上代码: 1 //这个方法innosetup会自动调用的,当安装步骤有所改变时,它就会被触发 2 procedure