Что нового

Обновление проводника Windows

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Функция обновляет проводник Windows (все окна). Аналогична нажатию F5 для каждого окна. Может быть полезна, после внесения в реестр соответствующих изменений, например после смены иконки для какого-либо типа файла.


Код:
Func _UpdateExplorer()

	Local $Opt = Opt('WinSearchChildren', 1)
	Local $List = WinList('[CLASS:SHELLDLL_DefView]')

	For $i = 1 To UBound($List) - 1
		DllCall('user32.dll', 'long', 'SendMessage', 'hwnd', $List[$i][1], 'int', 0x0111, 'int', 0x7103, 'int', 0)
	Next

	Opt('WinSearchChildren', $Opt)

EndFunc   ;==>_UpdateExplorer
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Yashied
Если мне не изменяет память есть функция EnvUpdate() - обновление среды операционной системы. То же самое кажется :-\
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
[?]
undefined сказал(а):
_UpdateExplorer() это и есть вместо F5.

Я бы сказал, что это и есть F5. Есть другой "правильный" вариант обновления, но он почему-то не всегда срабатывает с первого раза (по крайней мере у меня).

:(

Код:
Global Const $SHCNE_ASSOCCHANGED = 0x08000000
Global Const $SHCNF_IDLIST = 0

DllCall('shell32.dll', 'none', 'SHChangeNotify', 'long', $SHCNE_ASSOCCHANGED, 'uint', $SHCNF_IDLIST, 'ptr', 0, 'ptr', 0)
 

saavaage

Знающий
Сообщения
171
Репутация
17
Yashied, у меня сработало только это:

Код:
Func _RestartExplorer()
  Const $WM_SETTINGCHANGE = 0x001A
  Const $HWNDBROADCAST = 0xFFFF
  Const $szParam = "Environment"

  DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWNDBROADCAST, "int", $WM_SETTINGCHANGE, "int", 0, "int", $szParam)
  Run("rundll32 user32.dll,UpdatePerUserSystemParameters")
EndFunc   ;==>_UpdateExplorer


Ваш вариант в шапке топика не сработал, т.к. он, действительно, отрабатывает только F5.
PS Требовалось перезапустить проводник, чтобы вступили в силу изменения в реестре. Я скрывал разделы системы...
 

amorphyc

Новичок
Сообщения
45
Репутация
0
Yashied [?]
Я бы сказал, что это и есть F5. Есть другой "правильный" вариант обновления, но он почему-то не всегда срабатывает с первого раза (по крайней мере у меня).
sad.gif
Код: AutoIt [Выделить]Global Const $SHCNE_ASSOCCHANGED = 0x08000000Global Const $SHCNF_IDLIST = 0DllCall('shell32.dll', 'none', 'SHChangeNotify', 'long', $SHCNE_ASSOCCHANGED, 'uint', $SHCNF_IDLIST, 'ptr', 0, 'ptr', 0)

А у меня только именно это работает.
 
Верх