Вопрос 1. Как сделать обновление экрана
Такая ситуация меняю я параметры в реестре с показывать скрытые файлы на не показывать, но изменения видны только приследующем заходе в папку, а это не так как в проводнике, там мерцает экран, после конечно, нажатия кнопки подвердить измения и сразу этих значков не видно. Нужно как то сделать так же.
Вопрос 2. Совсем простой но чето ни как не могу найти объяснений.
Как с помощью FSO устанавливать атрибуты файлов.
Вопрос 1
Наверняка есть такое DDE-сообщение.
Только какое не знаю...
Или SendKeys для F5 когда Explorer активен (обновить)
Вопрос 2
Зачем в FSO?
Попробуй SetAttr
что б всем стало понятно зачем я это делаю и спрашиваю выкладываю прогу
http://wolf002.narod.ru/desktop.exe
и исходник
http://wolf002.narod.ru/desktop.rar
вообщем прога предназначена для того что б скрывать значки с вашего рабочего стола, она их не удаляет а просто назначает свойства скрыться
как она работает
в начале мы получаем путь к рабочему столу
затем собираем све файлы на раб столе в один массив, и идем по массиву с задержкой, что б значок исчезал и появлялся через не которое время. Так же программа смотрит на значения в реестре которые отвечают за показывать скрывать скрытые файлы и если стоит показывать то ставит значения скрыть. Но если запустить прогу с раб стола то значения реестра меняются, а вот значки не исчезают как надо, они просто бледнеют. Хотелось бы это исправить. И еще почему она жрет так много ресурсов в рабочем рижиме у меня она жрет 80-90% процессора. А зачем я спрашивал про FSO так это за тем что подумал, мож при его использование процессор будет не так загружен.
Вообщем у кого есть желание протестируйте
я так почитал по интернету понял, что это функция посылает сообщение верхним уровням окон, что типа были введены какие-то изменения в системе и надо переобновить данные, так же я понял, что функции типа boolean
но вот как ею пользоваться не где не нащел, если просто ее написать, так как вы мне написали в том месте кода,где я изменяю реестр, то пишет ошибку, вероятно ее нужно где то объявить
если можно напишите как ею пользоватся.
Желательно код
SendNotifyMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
Private Declare Function SendNotifyMessage Lib "user32.dll" Alias "SendNotifyMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Через SendNotifyMessage не удалось, т.е вставка
SendNotifyMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 после того как я меняю значения реестра ни к чему не привела.
А не подскажете как сделать это через SendMessage. Может в параметре lParam нужно указать раздел реестра в котором я делаю изменения.
Система посылает сообщение WM _ SETTINGCHANGE всем окнам верхнего уровня, когда функция SystemParametersInfo изменяет установки на системном уровне. Система посылает это сообщение только тогда, если вызывающая функция SystemParametersInfo устанавливает флажок SPIF_SENDCHANGE. Прикладная программа может посылать WM _ SETTINGCHANGE всем окнам верхнего уровня, когда она делает изменения для параметров системы. Например, Вы можете посылать это сообщение после обращения к функциям WriteProfileString, WriteProfileSection или SetLocaleInfo, или после создания изменений для параметров системы в системном реестре.Сообщение WM _ SETTINGCHANGE - то же самое, что и старое сообщение WM_WININICHANGE.
Синтаксис
WM _ SETTINGCHANGE
wParam = wFlag; // флажок параметров на системном уровне
lParam = (LPARAM) (LPCTSTR) pszSection; // наименование раздела или реестра
Параметры
wFlag
Значение wParam. Когда система посылает сообщению в результате обращения к System-ParametersInfo, этот параметр - флажок, который указывает параметр системы, который был изменен. О списке значений, см. функцию SystemParametersInfo. Когда прикладная программа посылает со-общение, этот параметр должен быть ПУСТО (NULL).
pszMetrics
Значение lParam. Указатель на строку, которая указывает область, содержащую параметр системы который был изменен. Например, эта строка может быть имя ключа реестра или имя раздела в файле WIN.INI. Этот параметр не особенно полезен в определении, какой изменился параметр системы. Например, когда строка - имя системного реестра, она обычно указывает только вершину в системном реестре, а не весь путь. Кроме того, некоторые прикладные программы посылают это сообщение с установкой параметра lParam в ПУСТО (NULL). Вообще, когда Вы принимаете это сообщение, Вы должны проверять и перезагружать любые настройки параметров системы, которые используются вашей прикладной программой.
Возвращаемые значения
Если вы обрабатываете это сообщение, возвращаемое значение - ноль.
Замечания
Чтобы послать сообщение WM _ SETTINGCHANGE всем окнам верхнего уровня, используйте функцию SendMessage с параметром hwnd установленным в HWND _ BROADCAST .