Самый простой способ не лучший в этом случае.

я есть расширение оболочки Windows, которое используетIShellIconOverlayIdentifier интерфейс для отображения значков наложения на файлы и папки. Мое расширение немного похожеTortoiseCVS или жеTortoiseSVN.

Иногда мне нужно заставить Windows Explorer перерисовать все его иконки. Для этого я звонюSHChangeNotify нравится:

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL)

Это обновляет рабочий стол и правую панель любых открытых окон проводника. Он не обновляет дерево папок в левой части окон Windows Explorer.

Я попытался отправитьWM_SETTINGCHANGE нравится:

SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0) 

в Vista это обновляет дерево папок, но не правую панель.

СочетаниеSHChangeNotify() с последующимWM_SETTINGCHANGE Кажется, работает довольно хорошо на Vista. Но я все еще не могу обновить дерево папок в XP, если оно отображается.

У кого-нибудь есть идеи, как сделать это лучше?

Есть ли лучшее решение для XP?

ОтправкаSHCNE_ASSOCCHANGED это немного похоже на клубный исследователь над головой. Это заставляет весь рабочий стол довольно сильно обновляться и приводит к тому, что любые открытые окна Проводника теряют позицию прокрутки. Есть что-нибудь менее насильственное?

Ответы на вопрос(3)

Ваш ответ на вопрос