开发者

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

I've been trying to change folder icon programmatically using changing desktop.ini on the folder. I was able to set an icon, but couldn't change i开发者_如何学JAVAt immediately through changing "IconIndex". The icon was also changed in a few seconds later.

Is there anybody know how to change the icon immediately?


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜