Самый простой способ не лучший в этом случае.
я есть расширение оболочки 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
это немного похоже на клубный исследователь над головой. Это заставляет весь рабочий стол довольно сильно обновляться и приводит к тому, что любые открытые окна Проводника теряют позицию прокрутки. Есть что-нибудь менее насильственное?