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

て烟熏妆下的殇ゞ 提交于 2019-12-19 17:45:51

问题


I'm trying to change folder icon programmatically using changing desktop.ini on the folder. I can set a icon, but can't change it immediately through changing "IconIndex". The icon is also changed in several seconds later.

Is there anybody know how to change the icon immediately?


回答1:


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




回答2:


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



回答3:


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



来源:https://stackoverflow.com/questions/6464147/how-can-i-immediately-reload-a-folder-icon-when-desktop-ini-is-changed

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