回收站刷新

时间:2012-08-30 08:58:40

标签: windows visual-c++ windows-shell

如果我手动删除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。

3 个答案:

答案 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?