zoukankan      html  css  js  c++  java
  • C# WebBrowser 设置独立的代理

    近期需要对webbrower设置代理,找到了如下方案:

    1.

    对修改注册表,设置全局代理

    这种方法限制在一个进程内只能设置或取消代理,而且是全局代理,对于部分不需要代理对功能会产生影响

    2.

    通过函数InternetSetOption实现修改当前程序中的WebBrowser设置

     1 static class WebBrowserProxy
     2  
     3 {
     4  
     5     struct Struct_INTERNET_PROXY_INFO
     6  
     7     {
     8  
     9         public int dwAccessType;
    10  
    11         public IntPtr proxy;
    12  
    13         public IntPtr proxyBypass;
    14  
    15     };
    16  
    17  
    18  
    19     [DllImport("wininet.dll", SetLastError = true)]
    20  
    21     static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer,int lpdwBufferLength);
    22  
    23  
    24  
    25     public static void SetProxy(string strProxy = "127.0.0.1:8888")
    26  
    27     {
    28  
    29         const int INTERNET_OPTION_PROXY = 38;
    30  
    31         const int INTERNET_OPEN_TYPE_PROXY = 3;
    32  
    33  
    34  
    35         Struct_INTERNET_PROXY_INFO struct_IPI;
    36  
    37  
    38  
    39         // Filling in structure
    40   
    41        struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
    42  
    43         struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy);
    44  
    45         struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");
    46  
    47  
    48  
    49         // Allocating memory
    50  
    51         IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI));
    52  
    53  
    54  
    55         // Converting structure to IntPtr
    56  
    57         Marshal.StructureToPtr(struct_IPI, intptrStruct, true);
    58  
    59         bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI));
    60  
    61     }
    62  
    63 }

    参考来源“https://blog.csdn.net/gold0523/article/details/38666701”

  • 相关阅读:
    Maximum sum-动态规划
    Ubuntu14下Hadoop开发<1> 基础环境安装
    POJ 3252 Round Numbers 数学题解
    ubuntu环境 rake aborted!
    oracle decode函数用法
    Android多线程研究(1)——线程基础及源码剖析
    2014冬去春来
    Android中的动画详解系列【4】——Activity之间切换动画
    JavaScript你所不知道的困惑(3)
    研发人员技术定级的一些思考
  • 原文地址:https://www.cnblogs.com/yishilin/p/9513207.html
Copyright © 2011-2022 走看看