我的任务是创build一个簿记程序,用于跟踪读取文件和文件夹的一些统计信息。 与Google Drive和TortoiseSVN类似,文件夹和文件图标应反映某些更改。 例如,具有在某个计算机上未被查看的文件的USB具有“x”,而查看的文件具有“o”。
我可以使用这个 Windows API来跟踪文件的使用情况,并且可以通过desktop.ini文件改变图标(以及其他一些不错的选项)[ 1,2,3,4 ]。
虽然手动搞乱desktop.ini文件,我已经成功地改变了图标,描述和其他有趣的东西。 问题是新的更改不会更新,直到Windows再次parsingdesktop.ini文件。 这往往会在几秒到几分钟之间不一致地发生。 F5刷新不会强制执行重新分析,但是如果发生重新分析,将会更新映像。
如何强制Windows在手动和(更重要的是)在C ++程序中重新parsingdesktop.ini文件?
有没有一个替代C ++ Windows API,可以立即改变文件夹图标?
如果您编辑desktop.ini,则资源管理器将不会自动刷新。 使用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);
如果你想有不同的文件夹图标来显示不同的状态(类似于SVN),那么你需要图标叠加。 更改文件夹图标不是合适的解决方案。 文件夹图标的变化将立即反映如果您需要进一步的细节,请让我知道。