Что нового

[Автоматизация] Обновление проводника при изменении параметров в реестре

PsiLink

Новичок
Сообщения
2
Репутация
0
Всем привет!

Назрел один вопрос: как при изменении параметров в реестре сделать обновление всего проводника, или хотя бы рабочего стола, как делает это чекбокс в Сервис -> Свойство папки -> Вид -> Скрывать расширения для зарегестрированных типов данных?
Самый грубый вариант - это убить процесс Explorer.exe и он сам заведется уже с новыми параметрами, но это не кошерно. На MSDN пишут что надо отправить WM_SETTINGCHANGE message, что я и сделал, но время срабатывания такого сообщения от 40(в лучшем случае) до 120 секунд.
Может быть я что-то упустил?

Код:
#include <SendMessage.au3>

$Hide = 0 ; 0 - Расширения показываются, а 1 - нет
RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\", "HideFileExt", "Reg_dword", $Hide)
$hProgman = WinGetHandle("[Title:Program Manager; Class:Progman]")

_SendMessage("HWND_BROADCAST", "WM_SETTINGCHANGE", null, null) ;Время срабатывания 40-115 секунд
_SendMessage($hProgman, "WM_SETTINGCHANGE", null, null) ;Если дать дискриптор прогмана, то работает, но не понятно как... Но чаще вообще не работает.

While 1
   ControlSend($hProgman, "", 1, "{F5}")
   Sleep(1000)
WEnd


...УУУпс, недосмотрел :stars: Оказывается это уже было решено Yashid'om в вот этой теме: http://autoit-script.ru/index.php/topic,327.0.html
Прошу удалить.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
(подробнее), а обычный код соответственно в тег [code]
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Верх