【问题标题】:How can I immediately reload a folder icon when desktop.ini is changed更改 desktop.ini 时如何立即重新加载文件夹图标
【发布时间】:2011-09-21 18:59:18
【问题描述】:

我一直在尝试使用更改文件夹上的 desktop.ini 以编程方式更改文件夹图标。我能够设置一个图标,但无法通过更改“IconIndex”立即更改它。几秒钟后,图标也发生了变化。

有人知道如何立即更改图标吗?

【问题讨论】:

  • 看看 SHChangeNotify API 并查找相关的 SO 帖子。
  • 我找到了关于自己问题的解决方案。这就是它使用的 SHGetSetFolderCustomSettings Win32 函数。
  • 你可以把它写成下面的完整答案。这会让这个问题的访问者更容易,并且它(你的答案)也会被投票。
  • 不能在 Windows 10 中使用SHGetSetFolderCustomSettings。有什么解决方法吗?

标签: windows windows-shell desktop.ini


【解决方案1】:

我之前已经通过评论我的问题的回复来回答了。为了方便,我再写一个答案。

如果您想使用 Desktop.ini 对任何文件夹的外观进行任何更改,请使用一些 win32 shell 函数。您不应该尝试直接编辑 Desktop.ini。它不会对任何文件夹的外观进行任何更改。

您可以通过以下链接获得更多关于win32 shell函数的信息。

http://msdn.microsoft.com/en-us/library/windows/desktop/bb776426(v=vs.85).aspx

【讨论】:

    【解决方案2】:

    例子:

    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);
    

    【讨论】:

    • 我收到一个错误:'SHFOLDERCUSTOMSETTINGS' was not declared in this scope。任何解决方法? 'SHGetSetFolderCustomSettings' was not declared in this scope 也是如此
    【解决方案3】:

    以下过程对我很有效(在 Windows 7 上):

    1. 更改 desktop.ini 文件
    2. 发出 SHChangeNotify(SHCNE_DELETE,SHCNF_PATH,"path_to/desktop.ini",0);
    3. 将刷新文件夹 ico

    记得包含 Shlobj.h

    【讨论】:

    • 包含错误。应该是 Shlwapi.h。
    • 不,它根本不起作用。晚上在电脑上玩 5 小时就像海市蜃楼
    • 任何想法如何在 desktop.ini 更改后刷新文件夹图标?从 XP windows 开始不支持 SHGetSetFolderCustomSettings。
    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    相关资源
    最近更新 更多