Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизОбновить значение реестра программно Найти похожие ветки
← →
Delphi5.01 © (2006-03-25 10:18) [0]Здравствуйте,
Вот возник такой вопрос, есть следующий кодprocedure TChangeProxy.setProxyIE;
var
myReg: TRegistry;
begin
myReg := TRegistry.Create;
myReg.RootKey := HKEY_CURRENT_USER;
myReg.OpenKey("\Software\Microsoft\Windows\CurrentVersion\Internet Settings\", False);
...
//Set proxy server
myReg.WriteString("ProxyServer", proxyServer);
//Enable proxy usage
myReg.WriteInteger("ProxyEnable", 1);
...
myReg.Free;
end;
который обновляет данные IE, но как известно они входят в силу или после рестарта или если в regedit-е нажать кнопку F5, проверил практично для уверенности Так вот вопрос, как можно это сделать прогрмно? Так как перезагружать комп после каждой смены данных, таких как домашняя страница, прокси и т.д. довольно нерационально
Заранее благодарен
← →
KSergey © (2006-03-25 14:15) [1]Стоп. На лицо какая-то каша :)
Вы меняете значение ключа реестра - оно ТУТ ЖЕ туды и прописывается.
Онако, какая-либо программа, использующая это значение, вовсе не обязана тут же перечитывать его заново, после изменения.
Отсюда и получается, что изменение для некоторых параметров вступает в силу только после перезагрузки (просто Windows считывает эти параметры лишь один раз - при старте системы). Другие программы могут перечитывать эти значния только по определенному сигналу ("F5" для regedit, например).
Вот и все.
← →
Delphi5.01 © (2006-03-25 23:56) [2]Ок тогда приведу пример:
1) Программно сменил значения прокси
2) Зашел в настройки ИЕ и что вижу там ничего не изменилось
3) Захожу в regedit и что вижу все значения поменяны
4) Нажимаю в regedit клавишу F5
5) Смотрю настройки ИЕ, все обновилось
Вот что происходит как я думаю, после того как значение некоего ключа обновились, они обновились толи в не оригинале толи наоборот, но одним словом реестр с которым работает ИЕ не обновился пока я не нажал F5 это факт. Вот и получается надо искусственно как то это замутить, как например рефрешнуть рабочий стол знаю (не помню но могу вспомнить) а вот как с регистром ...
Я раньше когда вручную фонты проинсталивал то требовал у пользователя рестартнуться, так как только после рестарта все прописывалось корректно, но и клавиша F5 делает кажется тоже самое
← →
Andy BitOff © (2006-03-26 00:43) [3]Попробуйте сообщить системе, что ключ изменён и все приложения должны его перечитать.
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(PChar(Путь_к_ключу)));
← →
Delphi5.01 © (2006-03-29 22:26) [4]Спасибо обязательно попробую
п.с. Инет на 3 дня вырубили гады админы так что был как в джунглях вне цивилизации Админам как всегда спасибо за перемещение топика в нужную ветку.
← →
Delphi5.01 © (2006-03-29 22:47) [5]Офигел, блин даже это не помогло :-) Я уж думал это должно помочь, значит получаеться проблема не в том что проги должны считать а что система должна апдеитнуть файл регистра
← →
Andy BitOff © (2006-03-30 04:43) [6]Какую строку передаете в SendMessage(HWND_BROADCAST, WM_WININICHANGE...
← →
Delphi5.01 © (2006-03-30 06:57) [7]Вот эту, если что неправильно то прошу извенить и указать правильную
Заранее благодарен
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(PChar("\Software\Microsoft\Windows\CurrentVersion\Internet Settings\")));
п.с. Думая что все происходит именно так как вы говорили так как все окна после вызова этой процедуры перерисовываються, а значит есть болшая вероятность что значения заного считываються.
← →
Andy BitOff © (2006-03-30 14:38) [8]Вы передаете не верную строку. Это можно было узнать проанализировав возвращаемое значение. Передавать нужно полный путь.
SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(PChar("HKEY _CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings")));
И без последнего слеша.
← →
Delphi5.01 © (2006-04-01 05:48) [9]Andy BitOff
Огромное вам спасибо, ваша идея наталкнула на поиски в интеренете и я нашел довольно полезныую сатью
Вот рабочий пример:Uses WinInet;
InternetSetOption(0,INTERNET_OPTION_SETTINGS_CHANGED,0,0);
Большое вам спасио за помощь, а если заинтересует вот ссылки на документацию:
http://www.gnegg.ch/archives/responding_to_searchstrings_ii.html
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/internetsetoption.asp
← →
Delphi5.01 © (2006-04-06 15:55) [10]Вопрос вдогонку, вот возникла теперь немного другого плана проблема, настройки оперы храниться в ini файле, как после изменений заставить браузер их обновить (прочесть), как только выключаю + включаю прогу все обновляется
Заранее благодарен за помощь
докопался до WM_SETTINGCHANGE но не помогло :-(
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c