zoukankan      html  css  js  c++  java
  • 清除webBrowser 缓存和Cookie的解决方案

    通过测试webBrowser与IE缓存和Cookie都存放在Local SettingsTemporary Internet Files,我们可以直接调用IE API进行清除

    解决方案1:

    public enum ShowCommands : int
    
    {
    
    SW_HIDE = 0,
    
    SW_SHOWNORMAL = 1,
    
    SW_NORMAL = 1,
    
    SW_SHOWMINIMIZED = 2,
    
    SW_SHOWMAXIMIZED = 3,
    
    SW_MAXIMIZE = 3,
    
    SW_SHOWNOACTIVATE = 4,
    
    SW_SHOW = 5,
    
    SW_MINIMIZE = 6,
    
    SW_SHOWMINNOACTIVE = 7,
    
    SW_SHOWNA = 8,
    
    SW_RESTORE = 9,
    
    SW_SHOWDEFAULT = 10,
    
    SW_FORCEMINIMIZE = 11,
    
    SW_MAX = 11
    
    }
    [DllImport("shell32.dll")]
    static extern IntPtr ShellExecute( IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, ShowCommands nShowCmd);
    
    //清除IE临时文件
    ShellExecute(IntPtr.Zero, "open", "rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 255", "", ShowCommands.SW_HIDE)

    其中ClearMyTracksByProcess 可进行选择设置 :

    Temporary Internet Files  (Internet临时文件)

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

    Cookies

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2

    History (历史记录)

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

     Form. Data (表单数据)

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16

     Passwords (密码)

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32

     Delete All  (全部删除)

    RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255

    缺点:在Webbrowser 在不关闭的情况下无法清除cookie

    解决方案2:

    //清除Session所需要调用的函数
    [ DllImport ("wininet.dll" , SetLastError = true )]
    private static extern bool InternetSetOption ( IntPtr hInternet , int dwOption, IntPtr lpBuffer , int lpdwBufferLength );
    //清空session
    public void ResetSession()
    {
        //Session的选项ID为42
        InternetSetOption ( IntPtr.Zero , 42 , IntPtr.Zero , 0 );
    }
    //清空cookie
    public void ResetCookie()
    {
        if (c_web.Document != null )
        {
        c_web.Document.Cookie.Remove (0 , c_web.Document.Cookie.Count() - 1 );
    
        }
        string [] theCookies = System.IO.Directory.GetFiles ( Environment.GetFolderPath (Environment.SpecialFolder.Cookies ));
        foreach (string currentFile in theCookies )
        {
            try
            {
                System.IO.File.Delete (currentFile );
            }
            catch (Exception ex)
            {
            }
        }
    }

    缺点:需要程序取得管理员权限

    解决方案3:

    利用 webBrowser 执行清楚cookie的js代码

    this._webBrowser.Navigate("javascript:void((function(){var a,b,c,e,f;f=0;a=document.cookie.split('; ');for(e=0;e<a.length&&a[e];e++){f++;for(b='.'+location.host;b;b=b.replace(/^(?:%5C.|[^%5C.]+)/,'')){for(c=location.pathname;c;c=c.replace(/.$/,'')){document.cookie=(a[e]+'; domain='+b+'; path='+c+'; expires='+new Date((new Date()).getTime()-1e11).toGMTString());}}}})())");

    缺点:在某些运行环境中会报“无法下载”的错,至于原因目前还没找到

  • 相关阅读:
    【leetcode】1215.Stepping Numbers
    【leetcode】1214.Two Sum BSTs
    【leetcode】1213.Intersection of Three Sorted Arrays
    【leetcode】1210. Minimum Moves to Reach Target with Rotations
    【leetcode】1209. Remove All Adjacent Duplicates in String II
    【leetcode】1208. Get Equal Substrings Within Budget
    【leetcode】1207. Unique Number of Occurrences
    【leetcode】689. Maximum Sum of 3 Non-Overlapping Subarrays
    【leetcode】LCP 3. Programmable Robot
    【leetcode】LCP 1. Guess Numbers
  • 原文地址:https://www.cnblogs.com/feiyuhuo/p/5272954.html
Copyright © 2011-2022 走看看