Добрый вечер.
Как обновить значки explorere, подобно тому как это
делает Tweak UI компонент панели управления
по команде Rebuild Icons?
Некоторые утилиты делают то же самое.
Пробовал SystemParametersInfo(SPI_SETICONS, 0, NULL, SPIF_SENDCHANGE).
Не работает?
Здравствуйте Peter K., Вы писали:
PK>Добрый вечер. PK>Как обновить значки explorere, подобно тому как это PK>делает Tweak UI компонент панели управления PK>по команде Rebuild Icons? PK>Некоторые утилиты делают то же самое.
PK>Пробовал SystemParametersInfo(SPI_SETICONS, 0, NULL, SPIF_SENDCHANGE). PK>Не работает?
PK>Помогите, пожалуйста. Заранее большое спасибо.
Здравствуйте Peter K., Вы писали:
PK>Если можно, подробнее — как с помощью SHChangeNotify() PK>обновить ВСЕ значки в explorere PK>(Рабочий стол, окна папок и т.п.)?
Я не уверен, так как конкретно "обновлять значки" на пробовал. Вообще, эта функция сообщает оболочке, что в ней произошли какие-то изменения. Поэтому я думаю, что для этого случая она подойдёт. Попробуйте так:
В некоторых ситуациях в оболочке Windows "портятся" значки
(искажаются, заменяются на неправильные и т.п.).
(В качестве примера: такое происходит иногда при переключении в
DirectX и обратно — фон с белого заменяется на серый).
Нажатие F5 не спасает.
Это исправляется перезагрузкой Windows, но не всегда.
Из-за ShellIconCache, как я понимаю.
Control panel applet Tweak UI из Power Toys по команде
Rebuild Icons на вкладке Repair производит "сброс"
всех окошек explorera, включая Рабочий стол.
Они "очищаются", "перезаполняются" в течение 2с или более
после чего значки всех объектов становятся нормальными.
В связи с этим окна получают сообщения WM_SETTINGCHANGE,
с wParam = SPI_SETNONCLIENTMETRICS (или 0 в других программах) и
lParam = 0, и обрабатывают их (return 0).
Здравствуйте Peter K., Вы писали:
R>>Попробуй изменить размер значков в системе туда-обратно.
PK>Это работает. PK>Я использую код: PK> BOOL bRet = RegSetValueEx(hkResult, "Shell Icon Size", 0, REG_SZ, PK> (CONST BYTE *)pszData, strlen(pszData)+1) == ERROR_SUCCESS;
Мда. А SystemParametersInfo() c параметрами SPI_SETICONS и/или SPI_SETICONMETRICS пробовал использовать?