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

    }

    }

    */

  • 相关阅读:
    内存对齐规则
    ATL窗口
    ATL的GUI程序设计(4)
    ATL的GUI程序设计(4)
    ATL的GUI程序设计(3)
    ATL的GUI程序设计(3)
    VMware Workstation 9.0 安装苹果Mac OS X10.9系统
    高级UIKit-03(NSFileManager、NSFileHandle)
    高级UIKit-02(文件操作)
    高级UIKit-01(总结基础UIKit)
  • 原文地址:https://www.cnblogs.com/wangchuang/p/2922269.html
Copyright © 2020-2023  润新知