How can I immediately reload a folder icon when desktop.ini is changed

為{幸葍}努か 提交于 2019-12-01 16:42:46

I already answered by commenting a reply at my question before. For more convenience, I will write an answer again.

If you want to make any change at an appearance of any folder using Desktop.ini, use some of win32 shell functions. You shouldn't try to edit a Desktop.ini directly. It doesn't get to make any change at an appearance of any folder.

You could get more information of win32 shell functions through the following link.

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

Example:

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

The following procedure works well for me (on Windows 7):

  1. Change desktop.ini file
  2. Issue SHChangeNotify(SHCNE_DELETE,SHCNF_PATH,"path_to/desktop.ini",0);
  3. Folder ico will be refreshed

Remember to include Shlobj.h

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!