Всем привет!
Назрел один вопрос: как при изменении параметров в реестре сделать обновление всего проводника, или хотя бы рабочего стола, как делает это чекбокс в Сервис -> Свойство папки -> Вид -> Скрывать расширения для зарегестрированных типов данных?
Самый грубый вариант - это убить процесс Explorer.exe и он сам заведется уже с новыми параметрами, но это не кошерно. На MSDN пишут что надо отправить WM_SETTINGCHANGE message, что я и сделал, но время срабатывания такого сообщения от 40(в лучшем случае) до 120 секунд.
Может быть я что-то упустил?
...УУУпс, недосмотрел :stars: Оказывается это уже было решено Yashid'om в вот этой теме: http://autoit-script.ru/index.php/topic,327.0.html
Прошу удалить.
Назрел один вопрос: как при изменении параметров в реестре сделать обновление всего проводника, или хотя бы рабочего стола, как делает это чекбокс в Сервис -> Свойство папки -> Вид -> Скрывать расширения для зарегестрированных типов данных?
Самый грубый вариант - это убить процесс 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
Прошу удалить.