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 |