0

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を出力します。

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() を呼び出してみてください。これにより、シェルが更新される可能性があります。

于 2012-08-30T10:46:22.567 に答える
1

文書化されていない shell32.dll 関数を使用してごみ箱アイコンを更新することもできますSHUpdateRecycleBinIcon。この VB6 の例を参照してください: ごみ箱を空にするにはどうすればよいですか?

于 2012-08-31T17:41:49.853 に答える