Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.013 c
3-47169
Adventure
2002-06-13 16:58
2002.07.15
Бред сивой кобылы........................


6-47635
cyborg
2002-04-29 21:50
2002.07.15
Socket+WinXP+Закрыть группу=Error+глюк+переполнение


3-47199
veronika
2002-06-19 12:58
2002.07.15
Округление значений полей.


1-47402
help
2002-07-02 17:13
2002.07.15
Верхний индекс!!!


1-47364
Dmk
2002-07-02 05:15
2002.07.15
Как узнать указатель на функцию?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский