如果我手动删除Recycler文件夹的内容(c ++),如何通知shell删除文件?这样就出现了空回收站图标? 编辑我使用DeleteFile()删除文件。
typedef int (CALLBACK* UpdateRecycleBinIcon)(void);
int x = 0;
HINSTANCE dllHandle = NULL;
dllHandle = LoadLibrary(_T("shell32.dll"));
UpdateRecycleBinIcon update = NULL;
if(dllHandle != NULL) {
update = (UpdateRecycleBinIcon)GetProcAddress(dllHandle, "SHUpdateRecycleBinIcon");
if(update != NULL)
x = update();
printf("%d\n",x);
}
它打印1。
答案 0 :(得分:3)
我认为你必须调用SHChangeNotify函数。
编辑示例:
// Get an IDList for the recycle bin.
LPITEMIDLIST a_pstIDList = NULL;
SHGetSpecialFolderLocation( NULL, CSIDL_BITBUCKET, &a_pstIDList );
// Get icon index in the system image list.
SHFILEINFO sfi = {0};
SHGetFileInfo((LPCSTR)a_pstIDList, 0, &sfi, sizeof(SHFILEINFO), SHGFI_PIDL | SHGFI_SYSICONINDEX);
SHChangeNotify(SHCNE_UPDATEIMAGE, SHCNF_DWORD, 0, sfi.iIcon);
答案 1 :(得分:2)
您可以尝试在自己删除文件后调用SHEmptyRecycleBin(),这可能会导致shell更新。
答案 2 :(得分:1)
还可以使用未记录的shell32.dll函数SHUpdateRecycleBinIcon
刷新回收站图标。看到这个VB6的例子:
How can I empty My recycle Bin?