J'ai une extension de shell Windows qui utilise l'interface IShellIconOverlayIdentifier pour afficher les icônes de superposition sur les fichiers et les dossiers. Mon extension est un peu comme TortoiseCVS ou TortoiseSVN.Comment puis-je actualiser par programme Windows Explorer?
Parfois, j'ai besoin de faire redessiner toutes les icônes de Windows Explorer. Pour ce faire, je l'appelle SHChangeNotify comme ceci:
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL)
Actualise le volet de bureau et de la main droite de toutes les fenêtres de l'explorateur ouvert. Il n'actualise pas l'arborescence de dossiers sur le côté gauche des fenêtres de l'Explorateur.
J'essayé d'envoyer WM_SETTINGCHANGE comme ceci:
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0)
sur Vista Actualise l'arborescence des dossiers, mais pas le volet de droite.
La combinaison de SHChangeNotify()
suivie de WM_SETTINGCHANGE
semble fonctionner assez bien sur Vista. Mais je ne peux toujours pas actualiser l'arborescence de dossiers sur XP s'il est affiché.
Est-ce que quelqu'un a des idées pour mieux faire?
Existe-t-il une meilleure solution pour XP?
L'envoi SHCNE_ASSOCCHANGED
est un peu comme un explorateur clubbing sur la tête. Il provoque le rafraîchissement de l'ensemble du bureau assez violemment et ouvre toutes les fenêtres ouvertes de l'Explorateur pour y perdre sa position de défilement. Y a-t-il quelque chose d'un peu moins violent?
TweakUI for XP dispose d'une option de "réparation de cache d'icônes". Vous pourrez peut-être utiliser SPY ++ pour voir ce qu'il fait. –
HughE! Avez-vous pu résoudre votre problème? – A9S6