2

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

4

1 回答 1

-1

要更改文件夹图标,需要两个步骤来实现:

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

于 2013-05-02T21:17:38.387 回答