Как я могу сразу перезагрузить значок папки при изменении desktop.ini - PullRequest
7 голосов
/ 24 июня 2011

Я пытаюсь изменить значок папки программно, используя для этого изменение desktop.ini. Я могу установить значок, но не могу изменить его немедленно, изменив «IconIndex». Значок также меняется через несколько секунд.

Кто-нибудь знает, как поменять иконку сразу?

Ответы [ 3 ]

1 голос
/ 18 октября 2013

Пример:

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);
1 голос
/ 01 апреля 2013

Я уже ответил, комментируя ответ на мой вопрос раньше. Для большего удобства я снова напишу ответ.

Если вы хотите внести какие-либо изменения в внешний вид любой папки с помощью Desktop.ini, используйте некоторые функции оболочки win32. Вы не должны пытаться редактировать Desktop.ini напрямую. Он не может вносить никаких изменений при появлении любой папки.

Вы можете получить больше информации о функциях оболочки win32 по следующей ссылке.

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

0 голосов
/ 27 июля 2015

Для меня хорошо работает следующая процедура (в Windows 7):

  1. Изменить файл desktop.ini
  2. Ошибка SHChangeNotify (SHCNE_DELETE, SHCNF_PATH, "path_to / desktop.ini", 0);
  3. Папка ico будет обновлена ​​

Не забудьте включить Shlobj.h

...