Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebBrowser: Link mit standard Browser öffnen ? (https://www.delphipraxis.net/66586-twebbrowser-link-mit-standard-browser-oeffnen.html)

wlfmario 31. Mär 2006 20:03


TWebBrowser: Link mit standard Browser öffnen ?
 
Hallo zusammen,

ich habe hier im Forum eine Tolle Procedure gefunden die mir Mails in HTML im TWebBrowser anzeigt.
Beim testen habe ich gemerkt, das wenn ich auf einen Link klicke, die Seite im TWebBrowser geladen wird.
Wie kann ich das verhindern, oder besser wie kann ich das Realisieren, das die Seite im Standard Browser angezeigt wird.

Hier mal die Procedure die ich gefunden habe.
Delphi-Quellcode:
procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
//------------------------------------------
// HTML Seiten anzeigen
//------------------------------------------
var
  sl: TStringList;
  ms: TMemoryStream;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
    Application.ProcessMessages;
  if Assigned(WebBrowser.Document) then
  begin
    sl := TStringList.Create;
    try
      ms := TMemoryStream.Create;
      try
        sl.Text := HTMLCode;
        sl.SaveToStream(ms);
        ms.Seek(0, 0);
        (WebBrowser.Document as
          IPersistStreamInit).Load(TStreamAdapter.Create(ms));
      finally
        ms.Free;
      end;
    finally
      sl.Free;
    end;
  end;
end;

toms 31. Mär 2006 20:06

Re: TWebBrowser: Link mit satandart Browser öffnen ?
 
Hallo!

Im OnBeforeNavigate2 kannst du Cancel auf True setzen und dann via ShellExecute die uebergebene URL im Standard Webbrowser starten

wlfmario 31. Mär 2006 20:52

Re: TWebBrowser: Link mit standart Browser öffnen ?
 
Danke das ging ja echt Fix.

Leidr habe ich jetzt das Problem, das wenn ich eine Mail im HTML empfange, soll sie im TWebBrowser angezeigt werden. nur wenn der benutzer auf einen Link in der Mail Clickt, soll sich der Standart Browser öffnen.

hier mla mein Code.

Delphi-Quellcode:
procedure THauptForm.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  Cancel := True;
  ShellExecute(Application.Handle, 'open', PChar(url),
    nil, nil, SW_ShowNormal);
end;
Leider hat der TWebBrowser kein OnClick.

toms 31. Mär 2006 21:07

Re: TWebBrowser: Link mit standart Browser öffnen ?
 
Du konntest das mit einer Boolean Variable machen.

Anstatt WebBrowser.Navigate('about:blank'); rufst du dann WebbrowserNavigate(Webbrowser, 'about:blank') auf.

Delphi-Quellcode:
var
 FIsStartPage : Boolean;

procedure WebbrowserNavigate(Webbrowser: TWebbrowser, const URL: string);
begin
  FIsStartPage := True;
  Webbrowser.Navigate(URL);
  FIsStartPage := False;
end;

procedure THauptForm.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  if (not FIsStartPage) then
  begin
    Cancel := True;
    ShellExecute(Application.Handle, 'open', PChar(url),
      nil, nil, SW_ShowNormal);
  end;
end;
PS: Standard schreibt man mit d :!:

wlfmario 31. Mär 2006 21:47

Re: TWebBrowser: Link mit standard Browser öffnen ?
 
Super Danke !

ich habe mir mal das Script angeguckt, und an meinen Code angepasst.
Klappt Super.

Jetzt klappt das auch mit den Standard Browser :idea:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz