C# Обновить Explorer
В моей программе я переключаю значение реестра скрытых файлов, чтобы указать проводнику скрыть или показать их. Однако, поскольку проводник не обновляется самостоятельно, я отправляю событие
SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);
обновить все. Однако, к сожалению, это ничего не освежает. Я вижу, что экран на рабочем столе немного мерцает, но чтобы увидеть изменения, мне нужно вручную обновить папку. SHChangeNotify, кажется, не работает для меня. Любая помощь будет принята с благодарностью.
1 ответ
Попробуйте SHGetSetSettings с вашим изменением на fShowAllObjects
Простой Get и Set с SHGetSetSettings не сработает.
Он достаточно умен, чтобы сравнить текущие настройки с тем, что вы отправляете, и уведомит другие окна об изменениях только в том случае, если они различаются.
Для обновления рабочего стола используйте SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, null);