TWebbrowser insérer icone

cs_keket Messages postés 91 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 18 mai 2010 - 8 mars 2010 à 09:56
cs_keket Messages postés 91 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 18 mai 2010 - 20 avril 2010 à 11:06
Bonjour,

Je viens vers vous aujourd'hui car j'ai un petit soucis.
En effet, j'essaye désespérément de récupérer une icône d'un site web dans une liste d'image ou un TImage.

Y-a-t-il une solution face a ce problème ?

Cordialement,

NeMMoDu80

7 réponses

cs_keket Messages postés 91 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 18 mai 2010
8 mars 2010 à 10:02
D'autre part j'ai oublier que j'avais trouver une source mais pas très bon car le lien des favicons change bien sur d'un site a l'autre.

var
  IdHTTP1:Tidhttp;
  MyStreamt:TMemoryStream;
  jp:TJpegImage;
begin
  MyStreamt:=TMemoryStream.Create; { ou tout autre TStream }
  Try
    IdHTTP1:=Tidhttp.Create(nil);
    Try
      IdHTTP1.Get('http://www.developpez.biz/images/Favicon.ico',Mystreamt);
    except
      ShowMessage('Fichier indisponible');
      Exit;
    End;
    Mystreamt.Seek(0, soFromBeginning);  { on rembobine le stream }
    jp:=TJpegImage.Create;
    Try
      jp.LoadFromStream(MyStreamt);
      Image1.Picture.Icon(jp);
    Finally
      jp.free;
    End;
  Finally
    IdHTTP1.Free;
    MyStreamt.Free;
  End;
end;
0
Utilisateur anonyme
8 mars 2010 à 10:22
Salut,

Ta question n'est pas clair : Dans le sujet de ta question tu parles de TWebbrowser alors que dans ton second message, tu utilises les composant Indy (Tidhttp).

Sinon le code que tu donnes répond parfaitement et totalement à ta demande .

Si le lien de ton image change constamment, ben ce n'est pas de ton coté que vient le problème donc pas de solution.

Ceci dit, tu peux récupérer les liens relatifs à des images, pour une page donnée (Un simple parseur fera très bien l'affaire) et télécharger ces images. Mais cette question ayant déjà été posée, je t'invite à utiliser le moteur de recherche de DelphiFr
0
cs_keket Messages postés 91 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 18 mai 2010
8 mars 2010 à 10:27
Merci beaucoup de la rapidité de ta réponse.

J'utilise le Twebbrowser pour afficher la page web concerner. Et j'ai trouver la méthode avec indy donc c'est un peu farfelu.

Une question simple : A quoi sert exactement idHTTP ? car je n'es jamais utilisé ce dernier et ne sais pas a quoi il sert exactement.
0
cs_keket Messages postés 91 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 18 mai 2010
8 mars 2010 à 13:28
Bon j'ai réussi ce que je voulais faire. Par contre un site qui ne possède pas de balise pour une icône n'auras pas d'icône associé.
Y a t-il une solution autre pour récupérer ces derniers ?

voici la solution de base :

procedure TForm1.WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
var
  IdHTTP1: Tidhttp;
  MyStreamt: TMemoryStream;
  jp: TIcon;
  lien, Source: string;
  SL: TStringList;
  position: integer;
begin
  ComboBox3.Text := tWebBrowser(pagecontrol1.ActivePage.Controls[0]).LocationURL;
  pagecontrol1.ActivePage.Caption := tWebBrowser(pagecontrol1.ActivePage.Controls[0]).LocationName;
  pagecontrol1.ActivePage.Hint := tWebBrowser(pagecontrol1.ActivePage.Controls[0]).LocationURL;

  if ComboBox3.Text <> 'about:blank' then
  begin
    MyStreamt := TMemoryStream.Create; { ou tout autre TStream }
    IdHTTP1 := Tidhttp.Create(nil);
    lien := StringReplace(ComboBox3.Text, 'http://www.', '', [rfReplaceAll]);
    lien := StringReplace(lien, 'www.', '', [rfReplaceAll]);
    SL := TStringList.Create;
    SL.Text := StringReplace(lien, '/', #13#10, [rfReplaceAll]);
    Source := tWebBrowser(pagecontrol1.ActivePage.Controls[0]).OleObject.Document.all.tags('HEAD').item(0).innerHTML;
    Source := Copy(Source, Pos('<LINK rel="shortcut icon" ', Source), Length(Source) - Pos('<LINK rel="shortcut icon" ', Source));
    Source := Copy(Source, Pos('href="', Source) + 6, Length(Source) - 6);
    Source := Copy(Source, 0, Pos('.ico', Source) - 1);
    if (Length(Source) < 20) and (Length(Source)<>0) then
    begin
      IdHTTP1.Get('http://www.' + SL[0] + Source + '.ico', Mystreamt);
      SL.free;
      Mystreamt.Seek(0, soFromBeginning); { on rembobine le stream }
      jp := TIcon.Create;
      try
        jp.LoadFromStream(MyStreamt);
        Icone.InsertIcon(Icone.Count, jp);
      finally
        jp.free;
      end;
      IdHTTP1.Free;
      MyStreamt.Free;
      pagecontrol1.ActivePage.ImageIndex := (Icone.Count - 1);
    end;
  end;
end;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
8 mars 2010 à 14:14
Bon keket, je voudrais pas te prendre pour un gland (Je sais elle est facile celle là ) mais sincèrement as tu fais une recherche préalable sur les fonctionnalités du TWebBrowser :

Non car déjà utiliser le TWebBrowser c'est pas terrible mais utiliser en plus le TIdHTTP pour récupérer un document, c'est à devenir . A quoi sert le TIdHTTP ? Moi je me demande surtout pourquoi et comment t'es venu l'idée d'utiliser ce composant, si tu ne sais pas à quoi il sert .

Oui oui le Francky est moqueur .

Non sincèrement, là tu nous fais un travail de cochon, un truc à la Mac Gyver à la morts moi le noeud. C'est comme si tu offrais un collier de pâtes pour la Saint Valentin à ta femme, c'est un peu à chier (Sauf si tu veux te faire larguer ).

Enfin brèf ici tu peux lire :

Récupèrer tous les liens d'une page Web

var i:Integer;
begin
for i:=0 to Webbrowser1.OleObject.Document.links.Length-1 do
Listbox1.Items.Add(Webbrowser1.OleObject.Document.Links.Item(i));
end;


De quoi récupérer les URLS de toutes les images

Ainsi que

Enregistrer une page Web

WebBrowser1.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_DODEFAULT);


De quoi satisfaire ton bonheur sans pour autant de faire une tambouille infâme
0
boyboys Messages postés 8 Date d'inscription dimanche 5 avril 2009 Statut Membre Dernière intervention 11 juin 2010
7 avril 2010 à 02:56
j'aimerais demander une aides sur les fonctionnalitée du twebroser et le tpagecontrole merci.j'ai chercher lune documentation sur les attributs des composants delphi mais jai pas trouve grand chose jattend toute aide merci
0
cs_keket Messages postés 91 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 18 mai 2010
20 avril 2010 à 11:06
Bonjour merci beaucoup pour l'aide. Je vais voir où cela me mène.
0