具有桌面.ini和即时刷新功能的自定义文件夹图标
Custom folder icons with desktop.ini & instant refreshing
我的任务是创建一个记录程序,跟踪文件和文件夹被读取的一些统计数据。类似于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,可以立即更改文件夹图标?
如果你编辑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),那么您需要图标覆盖。更改文件夹图标不是合适的解决方案。文件夹图标的更改将立即反映出来如果您需要更多的细节,请告诉我。
string folder = "folder";
// Edit your folder\desktop.ini
string flush = "attrib +s "+folder;
system(flush.c_str());
你可以使用这段c++代码来刷新文件夹
desktop.ini
相关文章:
- C++ - 没有自定义交换功能的移动分配运算符?
- '_HAS_CXX17'宏是否可用于自定义项目标头以启用C++17 语言集功能?
- 自定义分配器,包括放置新案例
- 如何在cmake工具链文件中设置编译功能,以便已知的自定义编译器使用target_compile_features
- 如何将标准::矢量插入具有自定义排序功能的 std::set 中
- C++ 添加编译器警告,以错误使用自定义打印/日志功能
- 自定义 {fmt} 格式化函数,具有编译时格式字符串检查功能
- C++17 'inline variable' vs 'extern' 关键字继承自 C 的新功能
- 如何在C++中使用自定义比较功能对字符串进行排序?
- 如何根据自定义操作中的属性集安装功能
- 自定义开关功能中存在大量神秘错误
- 如何自定义功能行为
- 如何使用自定义重复的法官功能制作集合
- MPI_Op_create:候选功能不可行.自定义结构指针不能解释为空指针
- 如何在自定义功能中使用C 构建器OpenArray
- Perl xs - 无法从方法调用返回新的自定义 C++ 对象 - 改为返回标量值
- 如何自定义QT,因此它在每个新的CPPF文件中添加了某些功能
- 将全局新与自定义内存管理器结合使用
- 我应该如何使用放置新的自定义分配API
- 从deque分配新的自定义对象