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

来源:互联网 发布:福建广电网络集团副总 编辑:程序博客网 时间:2024/05/23 01:01

这个例子是在学习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;}

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



程序运行结果如下: