uses
MSHTML;
begin
WebBrowser1.Navigate('irgendeinedatei.html');
repeat
Application.ProcessMessages;
until WebBrowser1.ReadyState >= READYSTATE_COMPLETE;
if WebBrowser1.Document <> nilthen
(Webbrowser1.Document as IHTMLDocument2).ParentWindow.Focus;
end;
Here's the translation of the text into Russian:
Код написан на Delphi и использует компонент MSHTML для взаимодействия с контролем TWebBrowser. Цель кода - навигация по HTML-файлу, ожидание полной загрузки страницы и установка фокуса на родительский окно веб-браузера.
Разбиваем код на части:
uses MSHTML; - эта строка включает модуль MSHTML, который предоставляет функциональность для работы с объектным моделью документа HTML Microsoft.
begin WebBrowser1.Navigate('irgendeinedatei.html'); - эта строка навигирует по HTML-файлу с именем 'irgendeinedatei.html'. Путь и имя этого файла можно заменить на желаемый URL.
repeat Application.ProcessMessages; until WebBrowser1.ReadyState >= READYSTATE_COMPLETE; - этот цикл ожидает, пока веб-браузер не完成 загрузку страницы. Он делает это, постоянно обрабатывая любые pending сообщения (например, загрузку новой страницы) и проверяет, если свойство ReadyState достигло значения READYSTATE_COMPLETE, что указывает на завершение загрузки страницы.
if WebBrowser1.Document <> nil then (Webbrowser1.Document as IHTMLDocument2).ParentWindow.Focus; - если документ, загруженный веб-браузером, не равен нулю, эта строка устанавливает фокус на его родительское окно. Свойство ParentWindow возвращает интерфейс к родительскому окну документа, а метод Focus устанавливает фокус на это окно.
Некоторые предложения по улучшению кода:
Рассмотрите обработку исключений: что если HTML-файл не существует, или возникнет ошибка сети при загрузке? Вам может потребоваться добавить блоки try-except для обработки этих сценариев.
Добавьте более robust навигацию: код только навигирует по одному конкретному URL. Если вам нужно навигировать по разным URL в зависимости от ввода пользователя или других условий, вам придется изменить код соответствующим образом.
Используйте более описательные имена переменных: переменная WebBrowser1 не очень описательна. Вам может потребоваться переименовать ее в something like MainWebBrowser.
Вот обновленная версия кода, которая включает эти предложения:
uses MSHTML;
procedure SetFocusToParentWindow;
begin
try
WebBrowser1.Navigate('irgendeinedatei.html');
repeat
Application.ProcessMessages;
until WebBrowser1.ReadyState >= READYSTATE_COMPLETE;
if Assigned(WebBrowser1.Document) then
(WebBrowser1.Document as IHTMLDocument2).ParentWindow.Focus;
except
// Обрабатывайте исключения здесь, например, отображая сообщение об ошибке.
end;
end;
Код все еще довольно простой, но это хороший старт для более сложных задач автоматизации веб-браузера.
Код на Delphi, который передает фокус окна после полной загрузки веб-страницы в TWebBrowser 2.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.