列举回收站中的文件和目录

这个例子是在学习Shell程序设计的时候看到的,觉得不错,就记录下来。

#include <windows.h>
#include <ShlObj.h>
#include <stdio.h>

#pragma comment(lib, "Shell32.lib")

DWORD ListFileInRecycleBin();

int main()
{
	ListFileInRecycleBin();

	system("pause");
	return 0;
}

DWORD ListFileInRecycleBin()
{
	CHAR szPath[MAX_PATH];
	IShellFolder *pisf = NULL;
	IShellFolder *pisfRecBin = NULL;

	SHGetDesktopFolder(&pisfRecBin);
	IEnumIDList *peidl = NULL;
	
	LPITEMIDLIST pidlBin = NULL;
	LPITEMIDLIST pidlCurrent = NULL;

	SHGetFolderLocation(NULL, CSIDL_BITBUCKET, NULL, 0, &pidlBin);

	pisfRecBin->BindToObject(pidlBin, NULL, IID_IShellFolder, (void**)&pisf);

	pisf->EnumObjects(NULL,
		              SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN,
					  &peidl);

	STRRET strret;
	ULONG uFetched;
	HANDLE hOutPut = GetStdHandle(STD_OUTPUT_HANDLE);
	printf("\nFiles In Recycle Bin:\n");
	while (1)
	{
		if (S_FALSE == peidl->Next(1, &pidlCurrent, &uFetched))
			break;

		SHGetPathFromIDList(pidlCurrent, szPath);
		pisf->GetDisplayNameOf(pidlCurrent, SHGDN_NORMAL, &strret);

		WriteConsoleW(hOutPut, L"\t", 1, NULL, NULL);
		WriteConsoleW(hOutPut, strret.pOleStr, lstrlenW(strret.pOleStr), NULL, NULL);
		WriteConsoleW(hOutPut, L"\n", 1, NULL, NULL);
	}

	ILFree(pidlBin);
	ILFree(pidlCurrent);
	pisf->Release();
	pisfRecBin->Release();
	peidl->Release();
	
	return 0;
}

我电脑中回收站截图如下:



程序运行结果如下:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值