Показать полную графическую версию : Обновление проводника Explorer после смены сис. параметров
Начало обсуждения темы (http://forum.oszone.net/post-1118480.html#post1118480)
_SendMessage(0xFFFF, 0x001D, 0, 0) отправляет сообщение об установке шрифта (WM_FONTCHANGE) всем окнам верхнего уровня (HWND_BROADCAST). »
Интересно, этот Hwnd не может быть использован для обновления сделанных настроек в реестре? К примеру после скрытия расширения файлов (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt)...
Интересно, этот Hwnd не может быть использован для обновления сделанных настроек в реестре? К примеру после скрытия расширения файлов (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt)... »
Это лучше сделать следующим образом:
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
Это было на оф. форуме, ты мог это видеть.
HWND_BROADCAST просто говорит Windows о том, что сообщение должно быть отправлено во все окна независимо от их состояния (SHOW, HIDE, и т.д.).
Это лучше сделать следующим образом: »
Супер!!! Я долго мучался над этим, до сих пор я посылал это-же сообщение всем окнам explorer'а! (включая открытые диалоги типа FileSaveDialog()).
Как оно сделано можно увидеть в утилите Toggle Hidden Files & Files Extension (http://creator-lab.ucoz.ru/load/4-1-0-40).
P.S
И всё же, лучше вместо значении сообщении использовать сами константы, так будет яснее для всех. Что такое «0x7103»?
Хорошо.
Global Const $WM_COMMAND = 0x0111
...
DllCall('user32.dll', 'long', 'SendMessage', 'hwnd', $List[$i][1], 'int', $WM_COMMAND, "int", 0x7103, 'int', 0)
...
Что такое 0x7103 лучше спросить здесь (http://www.autoitscript.com/forum/index.php?s=&showtopic=92690&view=findpost&p=666239), но лучше этого не делать. :)
Что такое 0x7103 лучше спросить здесь»
:lol: почитав более поздние комменты валика, я чуть не упал со стула.
Но если серъёзно, он не прав, он просто забыл что такое новичёк! И спросить про сообщение не помешало бы, т.к он сам где то писал что Magic Numbers (a.k.a «литеральные значения констант») использовать неприемлимо, но делать этого я не буду. Я предпочитаю спрашивать (http://www.google.ru/search?hl=ru&newwindow=1&q=WM_COMMAND+%2B28931&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=&aq=f&oq=) сначала у гугля, и он вроде дал ответ (http://www.theeldergeek.com/forum/index.php?showtopic=35778&view=findpost&p=235495):
Navigate to Menu > 215 > English > on the right pane, select Refresh and it shows 28931, these are some findings that maybe usefull for WM_COMMAND.
Refresh - 28931
Undo - 28699
Paste - 28698
Т.е это попросту идентификатор пункта в меню, и мы его вызываем.
Если покапаться дальше, то это будет работать не во всех системах, там ещё пишут что вроде в Vista нужен уже другой идентфикатор, т.ч это не универсальный метод, нужно вызывать саму комманду, а не исполняющий элемент...
там ещё пишут что вроде в Vista нужен уже другой идентфикатор »
В Vista и Windows 7 работает отлично.
CreatOR, похоже лучше этого способа обновить Windows Explorer никто не знает. На оф. форуме все молчат, ну Вы наверное это уже видели. Меня просто задел этот вопрос, но ответа я так и не нашел. В интернете тоже все много разных решений предлагают. 90% из них не работают или работают, но криво. Вообщем, пока пользуюсь этим. Если у кого нибудь есть идеи, то пожалуйста отпишитесь в этой ветке.
Кстати, там ошибка. Я поправил.
for $i = 1 To UBound($List) - 1
:shout:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.