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

    }

    }

    */

  • 相关阅读:
    C#学习笔记一类型转换、枚举、foreach
    C#学习笔记四ref out参数
    SQL学习笔记一SQL基础
    C#学习笔记七索引器
    QUIC和TCP
    接口测试——测试点
    linux下 服务器资源监控工具nmon安装与使用
    Python执行.sh脚本cataline环境变量配置
    linux 常用命令之运行.sh文件
    jacoco+ant安装部署篇
  • 原文地址:https://www.cnblogs.com/wangchuang/p/2922269.html
Copyright © 2011-2022 走看看