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

Перехват ссылок в TCppWebBrowser для открытия во внешнем браузере по умолчанию

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

Разработчики, использующие компоненты TCppWebBrowser в своих программах на Delphi, могут столкнуться с проблемой, когда все клики по ссылкам внутри компонента открываются в браузере Internet Explorer, несмотря на использование других браузеров по умолчанию в операционной системе. Это может быть неудобно, если ваше приложение использует TCppWebBrowser в качестве чатового окна или другого интерфейса, где пользователю необходимо открыть ссылки в стандартном браузере.

Проблема и возможное решение

При использовании TCppWebBrowser в вашей программе, которая работает как чат-окно, по умолчанию все ссылки открываются в Internet Explorer, так как компонент использует движок Internet Explorer. Один из предложенных способов решения проблемы — отмена навигации в событии OnBeforeNavigate2 и выполнение команды Shell.Execute, однако существует более элегантное решение, такое как обработка сообщения Windows или использования события.

Подтвержденное решение

Для решения данной проблемы можно использовать событие OnBeforeNavigate2, которое срабатывает перед навигацией TWebBrowser к новому URL. В этом событии можно отменить навигацию и перенаправить URL, используя ShellExecute, для открытия во внешнем приложении, которое по умолчанию используется в Windows для открытия веб-страниц.

Пример кода на Object Pascal (Delphi) для обработки события OnBeforeNavigate2:

unit MainFormUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    procedure FormCreate(Sender: TObject);
    procedure WebBrowser1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch;
      var URL, Flags, TargetFrameName, PostData, Headers: OLEVariant; var Cancel: WordBool);
  private
    RedirectUrls: Boolean;
  end;

var
  Form1: TForm1;

implementation

uses
  ShellAPI;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  WebBrowser1.Navigate('http://www.stackoverflow.com');
  RedirectUrls := True;
end;

procedure TForm1.WebBrowser1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL,
  var Flags, TargetFrameName, PostData, Headers: OLEVariant; var Cancel: WordBool);
var
  UrlString: string;
begin
  if not RedirectUrls then
    Exit;
  UrlString := URL;
  ShellExecute(Self.WindowHandle, 'open', PChar(UrlString), nil, nil, SW_SHOWNORMAL);
  Cancel := True;
end;

end.

В этом примере кода, при клике по ссылке в WebBrowser1, навигация будет отменена, и ссылка откроется в браузере по умолчанию, используемом в операционной системе пользователя.

Альтернативные подходы

Существуют и другие подходы, например, можно не обрабатывать событие webNewWindow2 в TCppWebBrowser, тогда ссылки, открытые в TCppWebBrowser, будут автоматически использовать браузер по умолчанию без дополнительных действий.

Заключение

Использование события OnBeforeNavigate2 позволяет перехватить навигацию по ссылкам в TCppWebBrowser и открыть их во внешнем браузере по умолчанию, что может быть полезно для улучшения пользовательского опыта в вашем приложении.

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

Разработчикам, использующим `TCppWebBrowser` в Delphi, необходимо перехватить навигацию по ссылкам для их открытия во внешнем браузере по умолчанию, так как по умолчанию `TCppWebBrowser` использует Internet Explorer.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:43:49/0.003680944442749/0