Форум: "Система";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
ВнизВопрос по реестру Найти похожие ветки
← →
Крутов Алексей (2002-04-16 10:38) [0]Уважаемые мастера !
Помогите пожалуйста разобраться с реестром.
Так, например, в программе Tweak UI есть возможность включения/отключения анимации СomboBox"ов.
С помощью RegMonitora установлено, что для этого необходимо
менять первый байт двоичных данных по адресу
HKEY_CURRENT_USER\Control Panel\Desktop\UserPreferencesMask
со значения 9A на 9E. Однако если это делать через редакторы
реестров (RegEdit, RegEdt32), либо через программу, то изменения
встурают в силу только после перезагрузки, в то время как Tweak UI перезагрузка не требуется.
Полазил в FAQ"е, нашел слова по поводу WM_SETTINGCHANGE, однако
не помогло. Вот как я ее вызывал:
var s:PChar;
...
Запись в реестр
s:=PChar("HKEY_CURRENT_USER\Control Panel\Desktop"), либо
s:=PChar("HKEY_CURRENT_USER");
SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,integer(s));
Скажите пожалуйста, что такого делает TweakUI и какие сообщения
оно посылает для применения данного параметра без перезагрузки
С уважением Крутов Алексей
← →
Крутов Алексей (2002-04-17 12:33) [1]За день поисков нашел пару функций, но положительного результата это не принесло. Поэтому прошу советов по направлению дальнейшего поиска. Привожу код.
На форме лежит CheckBox, через который устанавливается нужный режим анимация/быстрое выпадение и ComboBox, с помощью которого проверяется текущее состояние. По нажатию на кнопку производится запись в реестр.
procedure TForm1.Button1Click(Sender: TObject);
var Reg:TRegistry;
Buffer:array[1..4] of byte;
begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_CURRENT_USER;
if Reg.OpenKey("Control Panel\Desktop",false) then
begin
Reg.ReadBinaryData("UserPreferencesMask",Buffer,4);
if CheckBox1.Checked then Buffer[1]:=154 else Buffer[1]:=158;
Reg.WriteBinaryData("UserPreferencesMask",Buffer,4);
Reg.CloseKey;
Reg.Free;
// Тщетные попытки обновления параметров системы
SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,
LongInt(PChar("HKEY_CURRENT_USER")));
// Еще одна попытка
SystemParametersInfo(SPI_SETANIMATION, 0, Nil,
SPIF_UPDATEINIFILE);
ShowMessage("Изменения сохранены");
end;
end;
Пробовал также перезапускать explorer.exe, однако параметр UserPreferencesMask вступает у меня в силу только после перезагрузки, хотя, как я уже говорил, Tweak UI умеет его применять без нее.
Отзовитесь, знающие люди, помогите советом что еще попробовать.
С уважением Крутов Алексей
← →
Семеныч (2002-04-18 11:05) [2]А зачем тебе вообще это надо ?
Тебе что, перезагрузиться в лом ?
← →
Крутов Алексей (2002-04-18 11:18) [3]Хоть кто-то откликнулся на мой вопрос, а то сижу как в танке :-)
To Семеныч>
Нет, перегрузиться мне конечно не в лом. Весь интерес заключается в том, чтобы понять механизм обновления системных
настроек реестра после его обновления.
С уважением Крутов Алексей
← →
Donal_Graeme (2002-04-18 12:44) [4]а так пробовал?
SystemParametersInfo(SPI_SETANIMATION, 0, Nil, SPIF_SENDCHANGE);
← →
Крутов Алексей (2002-04-18 13:09) [5]To Donal_Graeme>
Пробовал, реакции никакой :-(
← →
Donal_Graeme (2002-04-18 17:24) [6]я тут глянул, у меня есть программка, которая изменяет обои. так вот обновление у меня делалось так :
SystemParametersInfo (SPI_SetDeskWallPaper, 0, @WP,
SPIF_SendWinIniChange + SPIF_UpdateIniFile);
InvalidateRect (0, nil, True);
и всё работает.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c