3

我的任务是创建一个簿记程序,用于跟踪文件和文件夹何时被读取的一些统计信息。与 Google Drive 和 TortoiseSVN 类似,文件夹和文件图标应该反映某些变化。例如,带有未在某台计算机上查看过的文件的 USB 带有“x”,而查看过的文件带有“o”。

我可以使用此Windows API跟踪文件使用情况,并且可以通过desktop.ini文件[ 1、2、3、4 ]更改图标以及其他一些不错的选项)。

在手动处理 desktop.ini 文件时,我成功地更改了图标、描述和其他有趣的东西。问题是在 Windows 再次解析 desktop.ini 文件之前,新的更改不会更新。这往往会在几秒钟到几分钟之间不一致地发生。F5 刷新不会强制重新解析,但会在发生重新解析时更新图像。

如何强制 Windows 在 C++ 程序中手动和(更重要的是)重新解析 desktop.ini 文件?

是否有可以立即更改文件夹图标的替代 C++ Windows API?

4

2 回答 2

2

如果您编辑 desktop.ini,它的 Explorer 不会自动刷新。用于SHGetSetFolderCustomSettings写入:

SHFOLDERCUSTOMSETTINGS fcs = {0};
fcs.dwSize = sizeof(SHFOLDERCUSTOMSETTINGS);
fcs.dwMask = FCSM_ICONFILE;
fcs.pszIconFile = iconPath;
fcs.cchIconFile = 0;
fcs.iIconIndex = iconIndex;
SHGetSetFolderCustomSettings(&fcs, folderPath, FCS_FORCEWRITE);
于 2013-10-18T03:14:31.323 回答
0

如果您希望使用不同的文件夹图标来区分不同的状态(类似于 SVN),那么您需要图标覆盖。更改文件夹图标不是合适的解决方案。文件夹图标的更改将立即反映如果您需要更多详细信息,请告诉我。

于 2013-11-26T06:02:31.053 回答