C#打开多个webBrowser 实现多窗口独立不同的cookie

技术分享 0 738

一直以来,C#中如果放多个webBrowser都会共享同一个cookie,但是实际应用中,需要不同的webBrowser 对应不同的cookie。

解决代码方法如下:

        [DllImport("wininet.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]
        public static extern bool InternetSetOption(int hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength);
        
        
        
                #region 一个进程一个COOKIE的关键代码
        /* 一个进程中的webBrowser共享一个cookie,webBrowser.Navigate()之前调用方法SuppressWininetBehavior()即可*/


        private unsafe void SuppressWininetBehavior()
        {
            /* SOURCE: http://msdn.microsoft.com/en-us/library/windows/desktop/aa385328%28v=vs.85%29.aspx
             * INTERNET_OPTION_SUPPRESS_BEHAVIOR (81):
             *      A general purpose option that is used to suppress behaviors on a process-wide basis. 
             *      The lpBuffer parameter of the function must be a pointer to a DWORD containing the specific behavior to suppress. 
             *      This option cannot be queried with InternetQueryOption. 
             *      
             * INTERNET_SUPPRESS_COOKIE_PERSIST (3):
             *      Suppresses the persistence of cookies, even if the server has specified them as persistent.
             *      Version:  Requires Internet Explorer 8.0 or later.
             */
            int option = (int)3/* INTERNET_SUPPRESS_COOKIE_PERSIST*/;
            int* optionPtr = &option;

            bool success = InternetSetOption(0, 81/*INTERNET_OPTION_SUPPRESS_BEHAVIOR*/, new IntPtr(optionPtr), sizeof(int));
            if (!success)
            {
                MessageBox.Show("Something went wrong !>?");
            }
        }
        #endregion



使用方法:


            SuppressWininetBehavior();

            web.Navigate("https://mp.weixin.qq.com/");



也许您对下面的内容还感兴趣: