![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заставить винду перечитать параметры из реестра
Alexey Romanskiy © (2004-11-21 23:15:00)Я делаю некоторые изменения в реестре, возможно ли заставить винду перечитать некоторые или все параметры из реестра, без перезагрузки?
Piter (2004-11-23 02:16:00) [1]Alexey Romanskiy (23.11.04 1:19) [18]
ПРавда в 9х не работает
ну так посмотри как в 9x называется окно регулятора и какой у него класс... но это, конечно, все полуспособы
но честно говоря я не раздуплил как это делать
ну если ты даже не слышал об этом - забей, задача очень не тривиальная...
Alexey Romanskiy (2004-11-23 01:19:00) [2]
> Piter © (23.11.04 00:15) [17]
Да, предлагал, но честно говоря я не раздуплил как это делать. но вот этой строчкой можно отключить регулятор громкости
SendMessage(FindWindow(PChar('SystemTray_Main'),nil),WM_close,0,0);
, спасибо, GuAV.
ПРавда в 9х не работает. :( Мож кто знает почему? и как исправить.
Piter (2004-11-23 00:15:00) [3]Alexey Romanskiy (22.11.04 21:03) [15]
я ж тебе уже предлагал, посылай броадкаст на восстановление иконки и перехватывай функцию Shell_NotifyIcon :)
GuAV (2004-11-22 21:44:00) [4]Полазил через SPY++. Значит процесс - SYSTRAY.EXE выводит не только этот индикатор, класс окна SystemTray_Main.
9х
Alexey Romanskiy (2004-11-22 21:03:00) [5]
> GuAV © (22.11.04 20:54) [13]
> Так послать окну регулятора WM_QUIT или там WM_SYSCOMMAND
> С SC_CLOSE...
Идея хорошая, только как получить хэндл окна регулятора громкости?
Alexey Romanskiy (2004-11-22 21:01:00) [6]
> Piter © (22.11.04 15:41) [12]
> ЗАЧЕМ ей это делать?
У меня есть программа, условно ее можно назвать "альтернативный регулятор громкости", мне необходимо сделать так, что бы при ее инсталяции стандартный регулятор заменялся моим, и при этом без перезагрузки. ДЛя этого изменяется, значение некоторого параметра в реестре, а затем необходимо, одно из двух
а) выгрузить значок самостоятельно
б) заставить программу перечитать содержимое реестра и выгрузить ее самостоятельно. (Хотя этот вариант менее вероятен)
Так или иначе для обоих вариантов нужен handle окна программы стандартного регулятора, который я никак не могу получить.
GuAV (2004-11-22 20:54:00) [7]Piter © (22.11.04 15:41) [12]
которая прячет регулятор громкости
Так послать окну регулятора WM_QUIT или там WM_SYSCOMMAND С SC_CLOSE...
Piter (2004-11-22 15:41:00) [8]Alexey Romanskiy (22.11.04 2:02) [10]
или все таки тебе придется заняться перехватом WinApi функций, что несомненно поможет, но является трудоемкой задачей.
Правда, я по прежнему считаю, что это какая-то неправильная программа, которая прячет регулятор громкости. ЗАЧЕМ ей это делать?
Piter (2004-11-22 14:45:00) [9]Alexey Romanskiy (22.11.04 1:49) [8]
попробуй найти DVM - он вроде писал замену Explorer'у - может что путного скажет насчет SysTray...
Alexey Romanskiy (2004-11-22 02:02:00) [10]
> Игорь Шевченко © (22.11.04 01:53) [9]
> Для этого, по-видимому, необходим перезапуск Explorer
Это грубовато. И очень заметно. К тому же после перезапуска explorera часто не все иконки в трее восстанавливаются. ПРи таком раскладе, имхо, лучше перезагрузка.
Игорь Шевченко (2004-11-22 01:53:00) [11]Alexey Romanskiy (22.11.04 01:49) [8]
Для этого, по-видимому, необходим перезапуск Explorer
Alexey Romanskiy (2004-11-22 01:49:00) [12]
> Игорь Шевченко © (22.11.04 00:31) [5]
>
> Все нельзя, некоторые можно.
Необходимо считать следующий параметр:
HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Systray\Services
Alexey Romanskiy (2004-11-22 01:44:00) [13]
> Piter © (22.11.04 00:45) [6]
> Alexey Romanskiy (21.11.04 23:15)
>
> WM_SETTINGCHANGE помогло?
Нет :(
Piter (2004-11-22 00:45:00) [14]Alexey Romanskiy (21.11.04 23:15)
WM_SETTINGCHANGE помогло?
Игорь Шевченко (2004-11-22 00:31:00) [15]
> возможно ли заставить винду перечитать некоторые или все
> параметры из реестра, без перезагрузки
Все нельзя, некоторые можно.
GuAV (2004-11-22 00:26:00) [16]Alexey Romanskiy (22.11.04 0:21) [3]
Какому handl-у посылать мессаг и с какими параметрами.
WM_SETTINGCHANGE + F1
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
Alexey Romanskiy (22.11.04 0:21) [3]
не помогает.
Бывает. Не на всё действует.
Alexey Romanskiy (2004-11-22 00:21:00) [17]
> Gero © (21.11.04 23:39) [1]
> Возможно.
Спасибо!
> GuAV © (21.11.04 23:41) [2]
Пробовал SendMessage($FFFFFFFF,WM_SETTINGCHANGE,0,0); - не помогает.
Как это делать правильно?
Какому handl-у посылать мессаг и с какими параметрами.
GuAV (2004-11-21 23:41:00) [18]WM_SETTINGCHANGE
Gero (2004-11-21 23:39:00) [19]Возможно.