【问题标题】:Custom folder icons with desktop.ini & instant refreshing带有 desktop.ini 和即时刷新的自定义文件夹图标
【发布时间】:2013-06-05 17:08:06
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c++ windows winapi directory


    【解决方案1】:

    如果您编辑 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);
    

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-09-21
      • 1970-01-01
      • 2021-12-08
      • 2021-12-13
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      相关资源
      最近更新 更多