webBrowser proxy sets the c code

  • 2020-05-07 20:20:55
  • OfStack

Set the agent for 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 The agent IP: port  
{ 
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)); 
} 
 Use: RefreshIESettings("xxx.xxx.xxx.xxx:xx"); 
 The perfect way:  
/* Complete resolution  
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; 
} 
// Set the agent  
public bool RefreshIESettings() 
{ 
return InternetSetOption(this.ProxyStr); 
} 
// Cancel the agent  
public bool DisableIEProxy() 
{ 
return InternetSetOption(string.Empty); 
} 
} 
*/ 

Related articles: