C# Обновить Explorer

В моей программе я переключаю значение реестра скрытых файлов, чтобы указать проводнику скрыть или показать их. Однако, поскольку проводник не обновляется самостоятельно, я отправляю событие

 SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);

обновить все. Однако, к сожалению, это ничего не освежает. Я вижу, что экран на рабочем столе немного мерцает, но чтобы увидеть изменения, мне нужно вручную обновить папку. SHChangeNotify, кажется, не работает для меня. Любая помощь будет принята с благодарностью.

1 ответ

Попробуйте SHGetSetSettings с вашим изменением на fShowAllObjects

Простой Get и Set с SHGetSetSettings не сработает.

Он достаточно умен, чтобы сравнить текущие настройки с тем, что вы отправляете, и уведомит другие окна об изменениях только в том случае, если они различаются.

Для обновления рабочего стола используйте SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, null);

Другие вопросы по тегам