public static bool Update() { NativeMethods.INTERNET_PROXY_INFO *ipi = (NativeMethods.INTERNET_PROXY_INFO *)Marshal.AllocHGlobal(sizeof(NativeMethods.INTERNET_PROXY_INFO)); NativeMethods.RtlZeroMemory(ipi, sizeof(NativeMethods.INTERNET_PROXY_INFO)); bool retval = NativeMethods.InternetSetOption(IntPtr.Zero, NativeMethods.INTERNET_OPTION_PROXY_SETTINGS_CHANGED, IntPtr.Zero, 0) && NativeMethods.InternetSetOption(IntPtr.Zero, NativeMethods.INTERNET_OPTION_SETTINGS_CHANGED, (IntPtr)ipi, sizeof(NativeMethods.INTERNET_PROXY_INFO)) && NativeMethods.InternetSetOption(IntPtr.Zero, NativeMethods.INTERNET_OPTION_REFRESH, IntPtr.Zero, 0); Marshal.FreeHGlobal((IntPtr)ipi); return(retval); }
public static bool Update(string server) { NativeMethods.INTERNET_PROXY_INFO *ipi = (NativeMethods.INTERNET_PROXY_INFO *)Marshal.AllocHGlobal(sizeof(NativeMethods.INTERNET_PROXY_INFO)); ipi->dwAccessType = NativeMethods.INTERNET_OPEN_TYPE_PROXY; ipi->proxy = (void *)Marshal.StringToHGlobalAuto(server ?? string.Empty); ipi->proxyBypass = (void *)Marshal.StringToHGlobalAuto("local"); bool retval = NativeMethods.InternetSetOption(IntPtr.Zero, NativeMethods.INTERNET_OPTION_PROXY, (IntPtr)ipi, sizeof(NativeMethods.INTERNET_PROXY_INFO)); Marshal.FreeHGlobal((IntPtr)ipi->proxy); Marshal.FreeHGlobal((IntPtr)ipi->proxyBypass); Marshal.FreeHGlobal((IntPtr)ipi); return(retval); }