zoukankan      html  css  js  c++  java
  • C# 为webBrowser设置代理

    http://blog.163.com/weipeng_yyp/blog/static/122478198201132223442853/

    为webBrowser设置代理:

    public struct Struct_INTERNET_PROXY_INFO

    {

    public int dwAccessType;

    public IntPtr proxy;

    public IntPtr proxyBypass;

    };

    [DllImport("wininet.dll", SetLastError = true)]

    private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);

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

    {

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

    }
    使用:RefreshIESettings("xxx.xxx.xxx.xxx:xx");

    --------------------------------------------------------------------------------

    完美方法:
    /*完整解析

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

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

    }

    private bool InternetSetOption(string strProxy)

    {

    int bufferLength;

    IntPtr intptrStruct;

    Struct_INTERNET_PROXY_INFO struct_IPI;

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

    intptrStruct = Marshal.AllocCoTaskMem(bufferLength);

    Marshal.StructureToPtr(struct_IPI, intptrStruct, true);

    return InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, bufferLength);

    }

    public IEProxy(string strProxy)

    {

    this.ProxyStr = strProxy;

    }

    //设置代理
    public bool RefreshIESettings()

    {

    return InternetSetOption(this.ProxyStr);

    }

    //取消代理
    public bool DisableIEProxy()

    {

    return InternetSetOption(string.Empty);

    }

    }

    */

  • 相关阅读:
    4.2说说计算机中的异常
    1.1组合电路、时序电路在计算机课程中的地位
    EFM32JG系列MCU内部温度传感器使用方法
    +7虚拟内存的作用,通过什么方式提高虚拟内存的性能
    +6存储结构是怎样提高性能的,它和局部性的关系是什么。
    +5性能分析定律
    +4 高速缓存
    +3软件优化至关重要,软件优化一般有哪些方法?
    +2流水线是怎样提高性能的,会遇到什么问题,解决方法是什么
    +1阿姆达尔定律
  • 原文地址:https://www.cnblogs.com/wangchuang/p/2922269.html
Copyright © 2011-2022 走看看