예제 #1
0
        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);
        }
예제 #2
0
        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);
        }