0

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

4

3 回答 3

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);
于 2012-08-30T09:06:26.500 回答
2

一旦您自己删除了文件,您可以尝试调用 SHEmptyRecycleBin(),这可能会导致 shell 更新。

于 2012-08-30T10:46:22.567 回答
1

也可以使用未记录的 shell32.dll 函数刷新回收站图标SHUpdateRecycleBinIcon。请参阅此 VB6 示例: 如何清空我的回收站?

于 2012-08-31T17:41:49.853 回答