Exemplo n.º 1
0
        internal static bool GetProxyDetails(out ProxyInfo proxyInfo)
        {
            NativeStructs.WINHTTP_CURRENT_USER_IE_PROXY_CONFIG proxyConfig = new NativeStructs.WINHTTP_CURRENT_USER_IE_PROXY_CONFIG();
            bool result = SafeNativeMethods.WinHttpGetIEProxyConfigForCurrentUser(ref proxyConfig);

            bool   autoDetect;
            string autoConfigUrl;
            string proxy;
            string proxyBypass;

            if (result)
            {
                autoDetect    = proxyConfig.fAutoDetect;
                autoConfigUrl = Marshal.PtrToStringUni(proxyConfig.lpszAutoConfigUrl);
                proxy         = Marshal.PtrToStringUni(proxyConfig.lpszProxy);
                proxyBypass   = Marshal.PtrToStringUni(proxyConfig.lpszProxyBypass);

                if (proxyConfig.lpszAutoConfigUrl != IntPtr.Zero)
                {
                    SafeNativeMethods.GlobalFree(proxyConfig.lpszAutoConfigUrl);
                    proxyConfig.lpszAutoConfigUrl = IntPtr.Zero;
                }

                if (proxyConfig.lpszProxy != IntPtr.Zero)
                {
                    SafeNativeMethods.GlobalFree(proxyConfig.lpszProxy);
                    proxyConfig.lpszProxy = IntPtr.Zero;
                }

                if (proxyConfig.lpszProxyBypass != IntPtr.Zero)
                {
                    SafeNativeMethods.GlobalFree(proxyConfig.lpszProxyBypass);
                    proxyConfig.lpszProxyBypass = IntPtr.Zero;
                }
            }
            else
            {
                autoDetect    = false;
                autoConfigUrl = null;
                proxy         = null;
                proxyBypass   = null;
            }

            proxyInfo = new ProxyInfo(autoDetect, autoConfigUrl, proxy, proxyBypass);
            return(result);
        }
Exemplo n.º 2
0
 internal static extern bool WinHttpGetIEProxyConfigForCurrentUser(ref NativeStructs.WINHTTP_CURRENT_USER_IE_PROXY_CONFIG pProxyConfig);