zoukankan      html  css  js  c++  java
  • 对WebBrowser控件设置代理

    我们用WebBrowser控件的时候,有时需要对它使用代理服务器。

    一种常规的做法是修改全局IE代理设置。这种方式可以通过修改注册表实现,但这样做就把所有的IE引擎都给设置了,网上介绍的大都是这种方法,并且往往并不是我所想要的效果,这里就不介绍了。

    另外一种方式是通过函数InternetSetOption实现修改当前程序中的WebBrowser设置,使用方式如下:

    代码
    static class WebBrowserProxy
    {
        
    struct Struct_INTERNET_PROXY_INFO
        {
            
    public int dwAccessType;
            
    public IntPtr proxy;
            
    public IntPtr proxyBypass;
        };

        [DllImport(
    "wininet.dll", SetLastError = true)]
        
    static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);

        
    public static void SetProxy(string strProxy = "127.0.0.1:8000")
        {
            
    const int INTERNET_OPTION_PROXY = 38;
            
    const int INTERNET_OPEN_TYPE_PROXY = 3;

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

            
    // Converting structure to IntPtr 
            Marshal.StructureToPtr(struct_IPI, intptrStruct, true);

            
    bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI));
        }
    }
  • 相关阅读:
    Vue应用框架整合与实战--Vue技术生态圈篇
    SpringBoot2.0之八 多数据源配置
    SpringBoot2.0之七 实现页面和后台代码的热部署
    SpringBoot2.0之六 多环境配置
    SpringBoot2.0之五 优雅整合SpringBoot2.0+MyBatis+druid+PageHelper
    SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍
    @getMapping与@postMapping
    701搜商家电话直通 网络黄页完成“终极使命”
    根据经纬度计算距离
    微网站
  • 原文地址:https://www.cnblogs.com/TianFang/p/1876516.html
Copyright © 2011-2022 走看看