Codes:
//////////////////////////////////////////////////////////////////////////
//原文:http://hi.baidu.com/hypkb/blog/item/a35950238b2242a34623e8a5.html
//查询并删除回收站内容
//初始化SHQUERYRBINFO结构
SHQUERYRBINFO RecycleBinInformation;
ZeroMemory(&RecycleBinInformation,sizeof(RecycleBinInformation)); //must
RecycleBinInformation.cbSize=sizeof(RecycleBinInformation);
TRACE("///////////////////////////////////////////////////n");
//查询回收站信息
if (SHQueryRecycleBin("F://",&RecycleBinInformation)==S_OK)
//SHQueryRecycleBin第一参数为要查询回收站的盘符或者文件夹,子文件夹
//一般其根目录相同指向的回收站也是一样的
//为NULL则指代所有回收站,和下面的SHEmptyRecycleBin第二参数相同
{
TRACE("The total size of all the objects in the specified Recycle Bin %ld/n",RecycleBinInformation.i64Size);
TRACE("The total number of items in the specified Recycle Bin %ld/n",RecycleBinInformation.i64NumItems);
}
else
{
TRACE("SHQueryrecycleBin Fail/n");
}
//清空回收站
if (SHEmptyRecycleBin(NULL, "F://", NULL/*SHERB_NOCONFIRMATION|SHERB_NOPROGRESSUI|SHERB_NOSOUND*/) == S_OK)
//SHEmptyRecycleBin第三参数如果要显示确认删除对话框和声音之类的东西置空既可
{
TRACE("SHEmptyRecycleBin Success/n");
}
else
{
TRACE("SHEmptyRecycleBin Fail/n");
}
//////////////////
//运行程序时会额外弹出如下对话框,我搜索也没搜到合适的desktop文件,不过我在E:/Recycle下试着删掉
该盘下的回收站时看到过一次desktop文件,以后试了几次也没在看到过,不知为么,可能与系统时有关...
/////////////////////////////////
其他:
1:桌面已经有一个回收站了,可是为什么每个磁盘里又再有一个回收站,这些回收站是用来做什么用的?
桌面上的是快捷方式,但是比较特殊,是无法删除的。分区里的回收站才是真正的文件夹,也是无法删除的。当磁盘内有文件要删除时,会自动剪切到那个分区的回收站,并且被压缩(不是rar或zip之类的压缩,而是系统自带的特殊方法)。每个磁盘都划分出一定的空间(一般是10%)来作为回收站,当删除文件的时候,它并没有真正删除,而是转移到了原文件所在盘划分出的这个回收站里了,这样如果恢复的话也快的多。桌面上的回收站相当于是所有磁盘里的回收站的快捷方式,所有回收站里的东西都可以在桌面上的这个回收站里看到。
2:为什么一个磁盘下有多个回收站?如何才可以去除一些,或者让他保持一个?
你每个都删删看,要是不是本系统建的就能删掉,有可能是你装过好几个系统,或是你的机器上装了双系统!
本文提供了一段用于查询和清空Windows回收站的C/C++代码示例。通过使用SHQUERYRBINFO结构和SHQueryRecycleBin及SHEmptyRecycleBin函数,可以实现获取指定回收站的内容大小和项目数量,并清空回收站。

1714

被折叠的 条评论
为什么被折叠?



