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

Как извлечь текущий URL из Chrome версии 28 на Windows для сторонних приложений

Delphi , Синтаксис , Справочник по API-функциям

Как извлечь текущий URL из Chrome версии 28 для сторонних приложений на языке Delphi?

Вопрос, который стоит перед разработчиками, заключается в том, как получить доступ к текущему URL, открытому в браузере Google Chrome версии 28, из стороннего приложения, написанного на языке Object Pascal для среды разработки Delphi. До версии Chrome 27 можно было перебрать элементы управления дочерних окон браузера и получить доступ к полю редактирования, из которого можно было извлечь строку с текущим URL. Однако начиная с версии 28, Chrome перешел на новый движок рендеринга (Blink) и больше не использует элементы управления Windows, за исключением главного окна (Chrome_WidgetWin_1) и вкладки с веб-страницей (Chrome_RenderWidgetHostHWND).

Решение проблемы

Существует альтернативный метод получения текущего URL из Chrome, используя API доступности Windows, которые позволяют извлекать информацию как из самого браузера, так и из веб-страниц. Это API представляет собой более абстрактный вариант перечисления элементов управления окнами.

Для начала можно использовать инструмент "Inspect Objects" для исследования доступной информации, включая адресную строку и её содержимое. Похоже, что адресная строка и её содержимое действительно доступны через это API.

В языке C# для получения информации можно использовать набор классов AutomationElement:

  1. Сначала получить элемент AutomationElement с использованием метода AutomationElement.FromHandle, если известен HWND дерева.
  2. Затем попытаться найти элемент AutomationElement с типом контрола Edit с помощью метода AutomationElement.FindFirst.
  3. Преобразовать найденный элемент в паттерн ValuePattern с помощью метода GetCurrentPattern.
  4. Наконец, использовать свойство Current.Value паттерна ValuePattern, чтобы получить значение из поля редактирования.

Пример кода на Object Pascal для работы с API доступности Windows может выглядеть следующим образом (предполагается, что у вас уже есть все необходимые заголовочные файлы и библиотеки):

uses
  System.Windows.Forms.Automation;

var
  windowElement: TAutomationElement;
  editElement: TAutomationElement;
  valuePattern: TValuePattern;

begin
  // Получение элемента окна, если известен его HWND
  windowElement := TAutomationElement.FromHandle(HWND_CHROME);

  // Поиск элемента с типом контрола Edit
  editElement := windowElement.FindFirst(TreeScope.tsDescendants, TPropertyCondition.Create(TAutomationElement.ControlTypeProperty, TControlType.cEdit));

  // Преобразование найденного элемента в паттерн ValuePattern
  valuePattern := editElement.GetCurrentPattern(TValuePattern.Pattern);

  // Получение значения из элемента редактирования
  CurrentURL := valuePattern.Current.Value;
end;

Обратите внимание, что для работы с API доступности Windows может потребоваться дополнительная настройка и тестирование, чтобы убедиться, что код корректно обрабатывает различные состояния и типы элементов.

Заключение

Изменения в Chrome версии 28, связанные с переходом на новый движок рендеринга, затруднили доступ к текущему URL из сторонних приложений. Однако использование API доступности Windows предоставляет решение этой проблемы. Разработчикам, работающим с Delphi и Object Pascal, важно быть в курсе таких изменений и адаптировать свои приложения для совместимости с новыми версиями браузера.

Создано по материалам из источника по ссылке.

Вопрос связан с получением текущего URL из браузера Google Chrome версии 28 для сторонних приложений, написанных на языке Delphi, после изменения движка рендеринга в Chrome на Blink, что сделало прежние методы недоступными.


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

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




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


:: Главная :: Справочник по API-функциям ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 14:08:38/0.0034348964691162/0