Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Заставить IE перечитать установки из реестра

Delphi , Интернет и Сети , Браузер

Заставить IE перечитать установки из реестра

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  I've written a small app that modifies a setting for IE and need to somehow tell 
  IE to re-read the registry settings. 
  Does anyone know of an API call or message that will do this? 
}

 uses
   WinInet;

 procedure IE_Reread_Registry_Settings;
 var
   HInet: HINTERNET;
 begin
   hInet := InternetOpen(PChar('YourAppName'), INTERNET_OPEN_TYPE_DIRECT,
     nil, nil, INTERNET_FLAG_OFFLINE);
   try
     if hInet <> nil then
       InternetSetOption(hInet, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);
   finally
     InternetCloseHandle(hInet);
   end;
 end;

Перевод:

Путь к тому, чтобы IE снова прочитал настройки реестра!

Код, который я предоставил, является хорошим стартом. Вызов InternetSetOption с опцией INTERNET_OPTION_SETTINGS_CHANGED действительно уведомляет Internet Explorer о том, что его настройки изменились и требуют обновления.

Однако, есть ловушка: это подход работает только в том случае, если Internet Explorer уже запущен. Если IE не запущен или вы хотите вызвать повторное чтение настроек реестра при запуске IE, вам нужно использовать другой подход.

Одной из возможных решений является использование интерфейса IInternetContainer и его метода Revert(). Метод Revert() может быть использован для уведомления Internet Explorer о том, что его настройки изменились, даже если он не запущен.

Вот пример кода, чтобы начать:

uses
  WinInet;

Процедура IE_Reread_Registry_Settings; var hIContainer: IInternetContainer; begin // Получение интерфейса IInternetContainer для по умолчанию браузера hIContainer := GetInternetContainer(); try if Assigned(hIContainer) then // Уведомление Internet Explorer о том, что его настройки изменились hIContainer.Revert(); finally ReleaseObject(hIContainer); end; end;

Функция GetInternetContainer: IInternetContainer; begin Result := nil; // Попытка получить интерфейс IInternetContainer для по умолчанию браузера CoCreateInstance(CLSID_InternetContainer, nil, CLSCTX_INPROC_SERVER, IInternetContainer, Result); end; ```

В этом коде мы используем функцию CoCreateInstance для создания экземпляра интерфейса IInternetContainer для по умолчанию браузера. Затем мы вызываем его метод Revert() для уведомления Internet Explorer о том, что его настройки изменились.

Обратите внимание, что вам нужно добавить тип-библиотеку InternetContainer (ocidl.dll) в ваш проект, чтобы использовать этот код.

Надеюсь, это поможет! Пожалуйста, дайте мне знать, если у вас есть какие-либо дальнейшие вопросы.

Заставить интернет-браузер IE перечитать настройки из реестра можно с помощью API-кalls WinInet, используя функцию InternetSetOption с параметром INTERNET_OPTION_SETTINGS_CHANGED.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-12 16:27:14/0.016772985458374/0