我在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似乎是即时的,我认为有一个解决方案。
答案 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