Как захватить текущий URL из окна Internet Explorer
Сначала Джон Леннон назвал свою группу "Beetles". Но оказалось, что адрес www.beetles.com уже занят какими-то жуками. С тех пор группа называется "Beatles".
Описываем две функции GetText и GetURL:
function GetText(WindowHandle: hwnd):string;
var
txtLength : integer;
buffer: string;
begin
TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
txtlength := txtlength + 1;
setlength (buffer, txtlength);
sendmessage (WindowHandle,wm_gettext, txtlength, longint(@buffer[1]));
result := buffer;
end;
function GetURL:string;
var
ie,toolbar,combo,
comboboxex,edit,
worker,toolbarwindow:hwnd;
begin
ie := FindWindow(pchar('IEFrame'),nil);
worker := FindWindowEx(ie,0,'WorkerA',nil);
toolbar := FindWindowEx(worker,0,'rebarwindow32',nil);
comboboxex := FindWindowEx(toolbar, 0, 'comboboxex32', nil);
combo := FindWindowEx(comboboxex,0,'ComboBox',nil);
edit := FindWindowEx(combo,0,'Edit',nil);
toolbarwindow := FindWindowEx(comboboxex, 0, 'toolbarwindow32', nil);
result := GetText(edit);
end;
Ну а затем пользуемся функцией GetURL, например, можем в поле ввода по нажатию на кнопку выводит текущий URL:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := GetURL;
end;
Задача заключается в том, чтобы поймать текущий URL из окна Internet Explorer с помощью Delphi.
Вот разбивка на части:
Первая часть описывает происхождение названия The Beatles, что не имеет отношения к задаче программирования.
Функция GetText принимает в качестве входного параметра handle окна (WindowHandle) и возвращает текст внутри этого окна в виде строки. Она использует функции Windows API, такие как SendMessage, GetWindowTextLength и SetLength, чтобы достичь этого.
Функция GetURL более сложная, потому что она должна найти окно Internet Explorer и затем найти конкретные дочерние окна (например, комбобоксы и редактируемые контролы) внутри этого окна. Она использует функции Windows API, такие как FindWindowEx, чтобы выполнить эти поиски.
Теперь давайте вернемся к задаче: поймать текущий URL из окна Internet Explorer. Для этого вы можете использовать функцию GetURL в вашем приложении Delphi. Например, если у вас есть кнопка на форме, которая должна отображать текущий URL при клике, вы можете реализовать ее следующим образом:
В этом коде Edit1 - это текстовое поле, в котором вы хотите отображать текущий URL. Когда вы кликните кнопку, функция GetURL будет вызвана, которая извлечет текущий URL из окна Internet Explorer и присвоит его свойству Text контрола Edit1.
Обратите внимание, что этот код предполагает, что есть экземпляр Internet Explorer, который сейчас запущен и имеет фокус при клике кнопки. Если вы хотите обрабатывать случаи, когда Internet Explorer может не быть запущен или не иметь фокуса, вам нужно добавить дополнительную обработку ошибок и логику.
В статье описывается способ захвата текущего URL из окна Internet Explorer с помощью функций GetText и GetURL, написанных на языке Pascal для использования в приложении.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.