unsafe void SetProxy(string rpProxy) { var rInfo = new NativeStructs.INTERNET_PROXY_INFO() { dwAccessType = NativeConstants.INTERNET_OPEN_TYPE.INTERNET_OPEN_TYPE_PROXY, lpszProxy = Marshal.StringToHGlobalAnsi(rpProxy), lpszProxyBypass = Marshal.StringToHGlobalAnsi("<local>") }; NativeMethods.WinINet.InternetSetOptionW(IntPtr.Zero, NativeConstants.INTERNET_OPTION.INTERNET_OPTION_PROXY, &rInfo, Marshal.SizeOf(typeof(NativeStructs.INTERNET_PROXY_INFO))); Marshal.FreeHGlobal(rInfo.lpszProxy); Marshal.FreeHGlobal(rInfo.lpszProxyBypass); }
static void SetProxy(string rpProxy) { var rInfo = new NativeStructs.INTERNET_PROXY_INFO() { dwAccessType = 3, proxy = Marshal.StringToHGlobalAnsi(rpProxy), proxyBypass = Marshal.StringToHGlobalAnsi("<local>") }; var rSize = Marshal.SizeOf(rInfo); var rBuffer = Marshal.AllocCoTaskMem(rSize); Marshal.StructureToPtr(rInfo, rBuffer, true); NativeMethods.WinINet.InternetSetOption(IntPtr.Zero, 38, rBuffer, rSize); if (rBuffer != IntPtr.Zero) { Marshal.FreeCoTaskMem(rBuffer); } }