打印本文 打印本文 关闭窗口 关闭窗口
C#清除IE缓存临时文件实现WebBrowser强制刷新
作者:佚名  文章来源:本站原创  点击数6379  更新时间:2012/9/14 8:50:45  文章录入:mintao  责任编辑:mintao

C#清除IE缓存临时文件实现WebBrowser强制刷新,写了个小程序获取时时彩网站的开奖号码,为了图方便,使用了.net自带的WebBrowser控件获取最新开奖号码。写完后发现了个问题,程序打开后无法获取下一期的开奖号码,也就是说WebBrowser获取的数据一直都是第一次打开程序时获取的那个页面。在网上查了下也有不少遇到这种问题的,refresh()不知为什么,在程序中并不好用。最后还是自己来清除缓存了,代码网上找的自己又改了改,挺好用的。

以下是代码片段:
 /// <summary> 删除临时文件
 /// CleanTempFiles();
 /// </summary>
 public static void CleanTempFiles()
 {
     //删除IE浏览器产生的临时文件以及文件夹
    FolderClear(Environment.GetFolderPath(Environment.SpecialFolder.InternetCache));
     //命令行清楚
     RunCmd("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8");
 }
 
 /// <summary>
 /// RunCmd(string cmd);
 /// </summary>
 /// <param name="cmd"></param>
 static void RunCmd(string cmd)
 {
     System.Diagnostics.ProcessStartInfo process = new System.Diagnostics.ProcessStartInfo();
     process.CreateNoWindow = false;
     process.UseShellExecute = false;
     process.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
     process.FileName = "cmd.exe";
     process.Arguments = "/c " + cmd;
 
     System.Diagnostics.Process.Start(process);

 }
 
 /// <summary> 删除IE临时文件夹
 /// FolderClear(string path);
 /// </summary>
 /// <param name="path"></param>
 static void FolderClear(string path)
 {
     System.IO.DirectoryInfo diPath = new System.IO.DirectoryInfo(path);
     foreach (System.IO.FileInfo fiCurrFile in diPath.GetFiles())
    {
         FileDelete(fiCurrFile.FullName);
 
    }
     foreach (System.IO.DirectoryInfo diSubFolder in diPath.GetDirectories())
     {
         FolderClear(diSubFolder.FullName); // Call recursively for all subfolders
     }
 }
 /// <summary> 删除IE临时文件,包括只读文件
 /// FileDelete(string path);
 /// </summary>
 /// <param name="path"></param>
 /// <returns></returns>
 static bool FileDelete(string path)
{
     //first set the File\'s ReadOnly to 0
     //if EXP, restore its Attributes
 
    System.IO.FileInfo file = new System.IO.FileInfo(path);
     System.IO.FileAttributes att = 0;
     bool attModified = false;
 
     try
     {
        //### ATT_GETnSET
         att = file.Attributes;
         file.Attributes &= (~System.IO.FileAttributes.ReadOnly);
         attModified = true;
 
         file.Delete();
     }
    catch (Exception e)
    {
         if (attModified)
             file.Attributes = att;
 
         return false;
     }
 
    return true;
 }

关于RunDll32.exe命令行参数请参考:

清除Internet临时文件

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

清除Cookies

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2

清除历史记录

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

清除表单数据

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16

清除密码

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32

清除上述全部项目

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255

清除上述全部项目,以及IE7中使用的加载项所保存的各种数据

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351

打印本文 打印本文 关闭窗口 关闭窗口