Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Webbrowser Icon und Link von Website bekommen (https://www.delphipraxis.net/107047-webbrowser-icon-und-link-von-website-bekommen.html)

Larsi 21. Jan 2008 12:54


Webbrowser Icon und Link von Website bekommen
 
hi,
ich bin grad dabei einen webbrowser zu programmieren. wenn man jetzt in ein edit zb www.google.de reinschreibt und dann auf Suchen klickt kommt im webbrowser halt goolge. wenn ich jetzt aber in google delphipraxis eingebe und dann auch auf delphipraixs draufklicke :) dann soll mein edit mit der aktuellen url und dem icon der delphipraxis aktualisiert werden!

Ich hoffe ihr versteht mich ansonsten einfach nachfragen^^ :)


MFG Lars Wiltfang

Matze 21. Jan 2008 12:59

Re: Webbrowser Icon und Link von Website bekommen
 
Hallo,

schau dir mal die Mini Webbrowser Demo an. Vielleicht hilft sie dir weiter.

Infos, welche Komponente du nutzt (TWebBrowser, MozillaActiveX-Control) wäre evtl. noch hilfreich. Ich vermute aber TWebBrowser, daher auch der obige Link.

Gruß

Larsi 21. Jan 2008 13:08

Re: Webbrowser Icon und Link von Website bekommen
 
habe mir den jetzt gedownloadet aber irgendwie kann ich nicht die zeile für meine frage sehen? Es wäre cht nett wenn mir d jemand hlefen könnte!

marabu 21. Jan 2008 13:18

Re: Webbrowser Icon und Link von Website bekommen
 
Hallo Lars,

dein WebBrowser meldet den URL der ausgelieferten Seite beim Ereignis OnDocumentComplete().
Im Basis-Verzeichnis der WebSite findest du die Datei favicon.ico mit dem kleinen Logo.

Freundliche Grüße

Larsi 21. Jan 2008 13:19

Re: Webbrowser Icon und Link von Website bekommen
 
und wie muss ich das codetechnisch machen dass dann in caption der richtige seitenname drin steht?

marabu 21. Jan 2008 13:37

Re: Webbrowser Icon und Link von Website bekommen
 
Was du laut deinem Beitrag #1 haben möchtest, ist der URL der aktuellen Webseite in der Caption deiner EditForm
Delphi-Quellcode:
procedure TEditForm.WebBrowserDocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  // ...
  self.Caption := URL;
end;

Larsi 21. Jan 2008 14:07

Re: Webbrowser Icon und Link von Website bekommen
 
und wie geht das nun mit dem icon?

marabu 21. Jan 2008 14:40

Re: Webbrowser Icon und Link von Website bekommen
 
Das Icon kannst du dir mit Hier im Forum suchenUrlDownloadToFile() besorgen. Würdest du deinen WebBrowser dafür verwenden, so wäre deine Seite ja wieder weg ...

API 21. Jan 2008 15:22

Re: Webbrowser Icon und Link von Website bekommen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, im TEmbeddedWB Package gibt's eine TIEAddress Komponente, welche auch das Favorite Icon anzeigen kann.

Codeauszug aus der Komponente:

Delphi-Quellcode:
function TCustomIEAddress.GrabFavicon(URL: AnsiString; dest: AnsiString): Boolean;
var
  i: Integer;
  St: Ansistring;
  bCancel: Boolean;
begin
  Result := False;
  try
    bCancel := false;
    St := RemovePrefix(URL, 'HTTP://');
    I := AnsiPos('/', RemovePrefix(St, 'HTTP://'));
    if I > 0 then
      St := 'http://' + System.Copy(St, 1, I);
    if Assigned(FOnGetFavicon) then
      FOnGetFavicon(Self, (GetCacheFolder + 'favicon.ico'), Text, bCancel, nil);
    if not bCancel then
    try
      Result := UrlDownloadToFile(nil, PAnsiChar(St + 'favicon.ico'), PAnsichar(dest), 0, nil) = 0;
    except
      Result := False;
    end;
  finally
  end;
end;

Matze 21. Jan 2008 16:56

Re: Webbrowser Icon und Link von Website bekommen
 
Hallo,

was habt ihr denn alle mit "favicon.ico"? Das zu nutzen wäre wie Windows-Pfade im Programm hardcoded (da wäre ein deutsches Wort mal interessant) zu verwenden. Diese sollte man generell dynamisch ermitteln und so ist dies hier ebenfalls. Das Icon meiner Website heißt beispielsweise - sehr einfallsreich gewählt - "icon.ico".

Es wäre also sinnvoller per regulären Ausdrücken oder den Stringfunktionen den Dateinamen des Icons aus dem HTML-Quelltext zu ermitteln, falls TWebBrowser keine andere bzw. einfachere Möglichkeit dafür bietet.

Code:
<link rel="shortcut icon" href="<Pfad zum Icon>"/>
Schlägt dies fehl, sollte überprüft werden, ob sich eine "favicon.ico" im Hauptverzeichnis befindet bzw. in umgedrehter Reihenfolge.
Übrigens kommen diverse Browser (Bsp. Firefox) auch mit anderen Bildformaten zurecht.

Grüße

marabu 21. Jan 2008 18:27

Re: Webbrowser Icon und Link von Website bekommen
 
Hallo Matthias,

Zitat:

Zitat von Matze
... was habt ihr denn alle mit "favicon.ico"? ...

gut das du fragst. Es gibt nicht sehr viele Web-Entwickler, die den Default-Namen favicon.ico nicht verwenden, aber damit deine WebSite nicht außen vor bleibt:

Delphi-Quellcode:
function GetLinkAttribute(doc: IDispatch; const rel, attr: string): string;
var
  ec: IHTMLElementCollection;
  e: IHTMLElement;
  i: Integer;
begin
  ec := (doc as IHTMLDocument3).getElementsByTagName('link');
  for i := 0 to Pred(ec.length) do
  begin
    e := ec.item(i, null) as IHTMLElement;
    if SameText(VarToStr(e.getAttribute('rel', 0)), rel) then
    begin
      Result := VarToStr(e.getAttribute(attr, 0));
      Exit;
    end;
  end;
  Result := '';
end;

// ShowMessage(GetLinkAttribute(Document, 'Shortcut Icon', 'href'))
Freundliche Grüße

Larsi 21. Jan 2008 19:16

Re: Webbrowser Icon und Link von Website bekommen
 
das mit der url klappt zwr aber gibt es auch ncoh vielleicht ne möglichkeit den titel herauszufinden
???

marabu 21. Jan 2008 20:36

Re: Webbrowser Icon und Link von Website bekommen
 
Document.Title ist das, was du suchst.

Larsi 22. Jan 2008 15:38

Re: Webbrowser Icon und Link von Website bekommen
 
Delphi-Quellcode:
Edit1.text := Document.Title
also wenn ich einfach unter document complete das reinschreibe dann kommt n fehler!
muss das wo anders rein?
und gibt es auch ne möglichkeit dass title und url schon beovr die seite fertig geladen ist angezeit werden?
wäre über eure hilfe sehr dankbar!

toms 22. Jan 2008 15:41

Re: Webbrowser Icon und Link von Website bekommen
 
Hallo

Den Titel kannst du im Ereignis OnTitleChange auslesen.
Sobald das Ereignis ausgelöst wird, wechselt der Titel.

Larsi 22. Jan 2008 16:26

Re: Webbrowser Icon und Link von Website bekommen
 
ok, ich habe meinen webbrowser mit tabs zur übersicht versehen! vorher stand dann da halt http://www.google.de drinnen jetzt habe ich es dank eurer hilfe :) halt so gemacht dass der seitentitel darinsteht. da ich aber bei ontabchnage des tabcontrols stehen hab dass er den text des tabs mit dem tabindex als url benutzen soll damit das mit dem vom tab zu tab schalten klappt. hat jemand ne idee wie ich das jetzt anstellen könnte dass das wieder so geht? hab mir schon überlegt n zweites unsichtbares tbcontrol zu nehmen indem dann die links stehen aber irgendwie finde ich das unpraltisch :)

toms 22. Jan 2008 16:41

Re: Webbrowser Icon und Link von Website bekommen
 
Du kannst ja ermitteln, welcher Webbrowser sich auf dem entsprechenden Tab befindet und
dann die LocationURL auslesen.

Andere Möglichkeit: Du erweiterst den Browser, resp das Tabsheet mit einigen Members.
Das hat den Vorteil, dass du die CSC_NAVIGATEFORWARD / CSC_NAVIGATEBACK Stati usw. des jeweiligen Webbrowsers speichern kannst.

z.B so

Delphi-Quellcode:
type
  TWebbrowser = class(SHDocVw.TWebbrowser)
  private
    // Titel des Webbrowsers
    FTitle: string;
    // CSC_NAVIGATEFORWARD und CSC_NAVIGATEBACK Status
    FNavForward: Boolean;
    FNavBack: Boolean;
  public
  end;
oder so:

Delphi-Quellcode:
type
  TTabSheet = class(ComCtrls.TTabSheet)
  private
    // URL des Webbrowsers im Tabsheet
    FURL: string;
    // CSC_NAVIGATEFORWARD und CSC_NAVIGATEBACK Status
    FNavForward: Boolean;
    FNavBack: Boolean;
  public
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 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