具体思路传一个SHQUERYRBINFO结构给SHQueryRecycleBin然后取得回收站信息保存在SHQUERYRBINFO结构里面,再显示出来,而后使用SHEmptyRecycleBin采取静默方式清空回收站.
代码如下:
#include <stdio.h>
#include <windows.h>
#include <shellapi.h> //SHEmptyRecycleBin和SHQueryRecycleBin所需要的头文件
int main(int argc, char* argv[])
{
//初始化SHQUERYRBINFO结构
SHQUERYRBINFO RecycleBinInformation;
ZeroMemory(&RecycleBinInformation,sizeof(RecycleBinInformation));
RecycleBinInformation.cbSize=sizeof(RecycleBinInformation);
//查询回收站信息
if (SHQueryRecycleBin(NULL,&RecycleBinInformation)==S_OK)
//SHQueryRecycleBin第一参数为要查询回收站的盘符或者文件夹,子文件夹
//一般其根目录相同指向的回收站也是一样的
//为NULL则指代所有回收站,和下面的SHEmptyRecycleBin第二参数相同
{
printf("The total size of all the objects in the specified Recycle Bin %ld\n",RecycleBinInformation.i64Size);
printf("The total number of items in the specified Recycle Bin %ld\n",RecycleBinInformation.i64NumItems);
}
else
{
printf("SHQueryrecycleBin Fail");
}
//清空回收站
if (SHEmptyRecycleBin(NULL,NULL,SHERB_NOCONFIRMATION|SHERB_NOPROGRESSUI|SHERB_NOSOUND) == S_OK)
//SHEmptyRecycleBin第三参数如果要显示确认删除对话框和声音之类的东西置空既可
{
printf("SHEmptyRecycleBin Success");
}
else
{
printf("SHEmptyRecycleBin Fail");
}
return 0;
}