繁体   English   中英

回收站刷新

[英]Recycle bin refresh

如果我手动删除Recycler文件夹的内容(c ++),如何通知外壳文件删除? 这样就会出现“清空回收站”图标? 编辑我使用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。

我认为您必须调用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);

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM