近期需要对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”