Search code examples
c#proxyinternetsetoption

How do I use InternetSetOption?


This question:

Using Proxy with web browser control

Told me to use "InternetSetOption". How do I use it? How might I implement it in code (example?)?

Thanks!


Solution

  • 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)
    {
        const int INTERNET_OPTION_PROXY = 38;
        const int INTERNET_OPEN_TYPE_PROXY = 3;
    
        Struct_INTERNET_PROXY_INFO struct_IPI;
    
        struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
        struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy);
        struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");
    
        IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI));
    
        // Converting structure to IntPtr
        Marshal.StructureToPtr(struct_IPI, intptrStruct, true);
    
        bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI));
    }
    
    private void Usage()
    {
        RefreshIESettings("1.2.3.4:8080");
        object nullObject = 0;
        string strTemp = "";
        object nullObjStr = strTemp;
        axWebBrowser1.Navigate("http://test.com", ref nullObject, ref nullObjStr, ref nullObjStr, ref nullObjStr);
    }