IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Recuperer source page web


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Par défaut Recuperer source page web
    bonjour
    je n'arrive pas a faire fonctionner le code décrit dans la faq pour récupérer la source d'un page web.
    je souhaite l'affichez dans un doc pour voir ce qu'il recupere mais mon doc reste vide.
    avez vous une idée de mon erreur? merci

    mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    // fonction non modifiée de la faq
    AnsiString __fastcall GetSource (TCppWebBrowser * browser)
    {
       IHTMLDocument3 *html = NULL;
       IHTMLElement *element = NULL;
       BSTR string = L"";
     
       try
       {
          if (browser->Document != NULL)
          {
             OleCheck(browser->Document->QueryInterface(IID_IHTMLDocument3,(LPVOID*)&html));
             OleCheck(html->get_documentElement(&element));
             OleCheck(element->get_outerHTML(&string));
          }
       }
       catch (EOleSysError &eOSE)
       {
          if (element != NULL)
          {
             element->Release();
          }
          if (html != NULL)
          {
             html->Release();
          }
          throw eOSE;
       }
       return (AnsiString) string;
    }
     
    // un bouton pour la tester
     
    void __fastcall TForm3::Button7Click(TObject *Sender)
    {
    GetSource (Form2 -> CppWebBrowser1);
    }
     
    // affichage sous word
     
    void __fastcall TForm3::Button2Click(TObject *Sender)
    {
     
    WideString source;
    //txt = VarToStr(aContenuHTML);
    source = string.c_str();
     
        Variant vFileName, vReadOnly, vWDocuments, vWDocument;
        vFileName = "c:\\test.doc";
        Variant vMSWord;
    try
            {
     
        vMSWord = Variant::CreateObject("Word.Application");
            }
    catch(...)
            {
        vMSWord = Variant::CreateObject("Word.Application");
            }
        vMSWord.OlePropertySet("Visible", true);
        vReadOnly = false; // lecture seule
     
        vWDocuments = vMSWord.OlePropertyGet("Documents");
        vWDocument = vWDocuments.OleFunction("Open", vFileName,vReadOnly);
        vMSWord.OlePropertyGet("Selection").OleProcedure("TypeText",source);
    }

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Merci de mieux lire la FAQ avant de poster
    l'article mentionné est parfaitement fonctionnel, mais il faut parfois le lire dans son entier
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut manworms2
    DjmSoftware a raison il faut lire correctement les exemples fournis, et prendre le temps de reflechir, les codes fournis demandent toujours a etre adaptes
    Sur la Form un TButton pour ouvrir la page Web et un CppWebBrowser pour l'affichage, un TButton pour copier le CppWebBrowser dans word
    le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #include <mshtml.h>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma link "SHDocVw_OCX"
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    TVariant vFlags = {0}, vTargetFrameName={0}, vPostData={0}, vHeaders={0};
    CppWebBrowser1->Navigate((TVariant)"<a href="http://www.site.com/page.html" target="_blank">http://www.site.com/page.html</a>", &vFlags, &vTargetFrameName, &vPostData, &vHeaders);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    AnsiString aContenuText = "";
    AnsiString aContenuHTML = "";
    Variant vDocument = CppWebBrowser1->ControlInterface->Document;
    if (((IDispatch *)vDocument) != NULL)
    {
       Variant vBody = vDocument.OlePropertyGet("Body");
       Variant vContenuText = vBody.OlePropertyGet("InnerText");
       Variant vContenuHTML = vBody.OlePropertyGet("InnerHTML");
       aContenuText = vContenuText;
       aContenuHTML = vContenuHTML;
    }
        Variant vFileName, vReadOnly, vWDocuments, vWDocument;
        Variant vMSWord;
    try
            {
        vMSWord = Variant::CreateObject("Word.Application");
            }
    catch(...)
            {
        vMSWord = Variant::CreateObject("Word.Application");
            }
        vMSWord.OlePropertySet("Visible", true);
        vReadOnly = false; // lecture seule
        vWDocuments = vMSWord.OlePropertyGet("Documents");
     vWDocument = vWDocuments.OleFunction("Add");
        vMSWord.OlePropertyGet("Selection").OleProcedure("TypeText",WideString(aContenuText));
    }
    //---------------------------------------------------------------------------

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Par défaut
    merci pour vos réponses
    blondelle j'ai essayer ton code mais il ne récupère pas la source, seulement le texte de la page.

    j'ai l'erreur lors de la compilation:
    "unresolved external Tform3 Get source referenced from UNIT3.OBJ"

    merci

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Dans la chaine de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vMSWord.OlePropertyGet("Selection").OleProcedure("TypeText",WideString(aContenuText));
    remplacer " aContenuText " par " aContenuHTML " pour recuperer le code HTML
    pour l'erreur soit tu a cree une Form non defini dans les autres Forms ou tu a enleve de ton code une Form sans effacer completement ses references dans les autres Forms

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Par défaut
    merci pour ta réponse , seulement la fonction que tu mentionne ne récupère que 1/3 du code source de la page.

Discussions similaires

  1. winsock source page web différente
    Par PoZZyX dans le forum Windows
    Réponses: 5
    Dernier message: 24/05/2007, 12h05
  2. recuperer une page web
    Par openWorld dans le forum Langage
    Réponses: 5
    Dernier message: 19/05/2007, 11h11
  3. recuperer une page web
    Par Liiscar dans le forum Documents
    Réponses: 1
    Dernier message: 10/01/2007, 18h29
  4. Recuperer une page Web sous Windows
    Par tmanta7 dans le forum Réseau
    Réponses: 7
    Dernier message: 22/05/2006, 23h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo