我在 Windows 8 上,我有更改文件夹图标的 C# 代码。
这工作得很好,但是刷新需要很长时间。我一直在尝试以下方法:
IntPtr path = Marshal.StringToHGlobalAuto(@"[FolderPath]");
SHChangeNotify(HChangeNotifyEventID.SHCNE_ATTRIBUTES,
HChangeNotifyFlags.SHCNF_PATHA, path, IntPtr.Zero);
SHChangeNotify(HChangeNotifyEventID.SHCNE_UPDATEIMAGE,
HChangeNotifyFlags.SHCNF_DWORD, IntPtr.Zero, IntPtr.Zero);
SHChangeNotify(HChangeNotifyEventID.SHCNE_ASSOCCHANGED,
HChangeNotifyFlags.SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);
这似乎对文件夹图标没有任何影响。它确实刷新了我的屏幕,但图标仍然是同一个图标。几分钟后我可以按 F5,它会变成我指定的文件夹图标。
我已经看到了一些非常丑陋的方法来解决这个问题,但我真的很想知道什么会告诉 Windows 以编程方式“刷新”文件夹图标。我已经看到保管箱似乎是即时的,我认为有一个解决方案。