更改文件夹图标需要更长的时间来显示更新的图标

时间:2013-05-02 21:11:51

标签: c# windows

我在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以编程方式“刷新”文件夹图标。我已经看到Dropbox似乎是即时的,我认为有一个解决方案。

1 个答案:

答案 0 :(得分:0)

要更改“文件夹”图标,需要两个步骤才能实现此目的:

Step 1. Create a desktop.ini file inside the folder for which to create the icon (the "Target Folder").
Step 2. Set the Target Folder's attribute to "System".

要完成这些步骤,请创建两个类,即编排步骤的FolderIcon和IniWriter,它只有一个名为WriteValue()的静态方法,它包装了WritePrivateProfileString()Win32 API函数。

要以正确的方式完成所有这些事情,请按照以下代码项目教程进行操作:

http://www.codeproject.com/Articles/9331/Create-Icons-for-Folders-in-Windows-Explorer-Using