中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 系统
递归法实现一键清空
作者:未知 时间:2005-07-20 14:20 出处:VC知识库 责编:chinaitpower
              摘要:递归法实现一键清空

递归法实现一键清空


作者:同济大学 02 级计算机系 David

下载源代码


   本人刚学VC不久,近来做了一个一键清空的小软件,主要是为了保护个人隐私,该软件清除的内容包括:我最近的文档,IE访问记录,上网历史记录,地址栏URL记录,清除REALPLAY播放列表,清除REALONE播放列表。该软件支持9X/2000/XP/2003,在同学的电脑上实验过,效果不错。 运行画面如图一:


图一 一键清空运行画面

1、核心代码
    该软件的核心代码是ClearDir函数:

   void CClearAllDlg::ClearDir(CString str)
   { 
	CFileFind ff;
	CString szDir=str;
	if (szDir.Right(1)!="\\") szDir+="\\";
	szDir+="*.*";

	BOOL bfile=ff.FindFile(szDir);
	while (bfile)
	{
	  bfile=ff.FindNextFile();
	  if (ff.IsDirectory() && !ff.IsDots())   ClearDir(ff.GetFilePath());
	  else if (!ff.IsDots() && !ff.IsDirectory())  DeleteFile(ff.GetFilePath());
	}
	ff.Close();
   }   
该函数用递归法清除了一个目录下的所有文件和子目录。只需传递给它需要清除的文件夹的路径即可。

2、判断操作系统
    先获取操作系统的信息,然后判断版本号,代码如下:
OSVERSIONINFO os;
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&os);

//如果是WIN 2000以上

if (os.dwPlatformId==VER_PLATFORM_WIN32_NT)
{
     …………
}

//如果是WIN 9X
if (os.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
{
     …………
}
3、构造清除的路径
由于9X和NT系统存放"最近文档","历史记录"的文件夹不相同,所以必须分别考虑。在9X下,最近文档和历史记录的目录分别为"盘符:\\WINDOWS\\Recent\\""盘符:\\WINDOWS\\History\\",所以只需清除这两个固定目录即可。在NT下,由于支持多用户,这些路径中间需要加上"用户名"或者"计算机名.用户名"的字符串。所以构造起来稍微麻烦一点,具体请参考源代码。

4、清除注册表记录
我用了一个类CRegistry,来清除一些注册表中的记录,请参考源代码。

欢迎来信交流

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有