begin process at 2010 02 09 21:48:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > ACCÉDER AU CONTENU HTML D'UNE PAGE COMPORTANT DES FRAMES

ACCÉDER AU CONTENU HTML D'UNE PAGE COMPORTANT DES FRAMES


 Information sur la source

 Description


Pour Visual Studio 2005 Beta...

Dans une application Windows Forms, avec un contrôle WebBrowser (anciennement AxWebBrowser1), ce petit bout de code permet de récupérer le code HTML de pages qui comportent des Frames.

Le contrôle WebBrowser ne permet pas de faire cette opération, ou alors je n'ai pas réussi à trouver la bonne manip'...

J'ai donc utilisé, en parallèle, un objet de type InetClass (Internet Transfer).

A voir si c'est applicable dans les versions moins récentes de Visual C#.

Source

  • using InetCtlsObjects;
  • using mshtml;
  • using System;
  • using System.Windows.Forms;
  • namespace MonEspaceDeNom
  • {
  • public class FenetreWebBrowser : System.Windows.Forms.Form
  • {
  • // Attributs privés
  • private string url;
  • private string strFrame;
  • private InetClass monInet;
  • // Généré par Visual Studio 2005 Beta
  • private WebBrowser monWebBrowser;
  • // private AxWebBrowser1 monAxWebBrowser1 pour les versions précédentes
  • private System.ComponentModel.IContainer components;
  • public FenetreWebBrowser()
  • {
  • //
  • // Requis pour la prise en charge du Concepteur Windows Forms
  • //
  • InitializeComponent();
  • //
  • // TODO : ajoutez le code du constructeur après l'appel à InitializeComponent
  • //
  • monInet = new InetClass();
  • monInet.AccessType = AccessConstants.icDirect;
  • monInet.Protocol = ProtocolConstants.icHTTP;
  • // Supprime les messages d'erreur de scripts...
  • monWebBrowser.ScriptErrorsSuppressed = true;
  • // monAxWebBrowser1.Silent = true pour les versions antérieures
  • }
  • /// <summary>
  • /// Nettoyage des ressources utilisées.
  • /// </summary>
  • protected override void Dispose( bool disposing )
  • {
  • if( disposing )
  • {
  • if (components != null)
  • {
  • components.Dispose();
  • }
  • }
  • base.Dispose( disposing );
  • }
  • #region Windows Form Designer generated code
  • /// <summary>
  • /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
  • /// le contenu de cette méthode avec l'éditeur de code.
  • /// </summary>
  • private void InitializeComponent()
  • {
  • this.components = new System.ComponentModel.Container();
  • this.monWebBrowser = new System.Windows.Forms.WebBrowser();
  • this.SuspendLayout();
  • //
  • // monWebBrowser
  • //
  • this.monWebBrowser.Location = new System.Drawing.Point(0, -2);
  • this.monWebBrowser.Name = "monWebBrowser";
  • this.monWebBrowser.Size = new System.Drawing.Size(843, 645);
  • this.monWebBrowser.TabIndex = 1;
  • this.monWebBrowser.Navigating += new System.Windows.Forms.WebBrowserNavigatingEventHandler(this.monWebBrowser _Navigating);
  • //
  • // FenetreWebBrowser
  • //
  • this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
  • this.ClientSize = new System.Drawing.Size(844, 644);
  • this.Controls.Add(this.monWebBrowser);
  • this.Load += new System.EventHandler(this.FenetreWebBrowser_Load);
  • this.Name = "FenetreWebBrowser";
  • this.Text = "FenetreWebBrowser";
  • this.ResumeLayout(false);
  • }
  • #endregion
  • /// <summary>
  • /// Point d'entrée principal de l'application.
  • /// </summary>
  • [STAThread]
  • static void Main()
  • {
  • Application.Run( new FenetreWebBrowser() );
  • }
  • private void DistriGameWB_Load(object sender, System.EventArgs e)
  • {
  • // Variables inutiles dans la version 2005, mais indispensables dans les versions antérieures
  • object o = url;
  • object param = System.Reflection.Missing.Value;
  • // Connection au site
  • url = "http://www.un_site_avec_des_frames.com/";
  • monBrowser.Navigate( url );
  • // monAxWebBrowser1.navigate( ref o, ref param ) pour les versions précédentes
  • }
  • private void monWebBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
  • {
  • if (e.TargetFrameName == "NomDeLaFramePourLaquelleOnSouhaiteAvoirLeContenu")
  • {
  • strFrame = (string)monInet.OpenURL( e.Url, DataTypeConstants.icString );
  • }
  • }
  • }
  • }
using InetCtlsObjects;
using mshtml;
using System;
using System.Windows.Forms;


namespace MonEspaceDeNom
{

  public class FenetreWebBrowser : System.Windows.Forms.Form
  {

    // Attributs privés
    private string url;
    private string strFrame;
    private InetClass monInet;

    // Généré par Visual Studio 2005 Beta
    private WebBrowser monWebBrowser;
    // private AxWebBrowser1 monAxWebBrowser1 pour les versions précédentes
    private System.ComponentModel.IContainer components;

    public FenetreWebBrowser()
    {

      //
      // Requis pour la prise en charge du Concepteur Windows Forms
      //
      InitializeComponent();

      //
      // TODO : ajoutez le code du constructeur après l'appel à InitializeComponent
      //
      monInet  = new InetClass();
      monInet.AccessType = AccessConstants.icDirect;
      monInet.Protocol = ProtocolConstants.icHTTP;
    
      // Supprime les messages d'erreur de scripts...
      monWebBrowser.ScriptErrorsSuppressed = true;
      // monAxWebBrowser1.Silent = true pour les versions antérieures

    }

    /// <summary>
    /// Nettoyage des ressources utilisées.
    /// </summary>
    protected override void Dispose( bool disposing )
    {
      if( disposing )
      {
        if (components != null) 
        {
          components.Dispose();
        }
      }
      base.Dispose( disposing );
    }

#region Windows Form Designer generated code
    /// <summary>
    /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
    /// le contenu de cette méthode avec l'éditeur de code.
    /// </summary>
    private void InitializeComponent()
    {
      this.components = new System.ComponentModel.Container();
      this.monWebBrowser = new System.Windows.Forms.WebBrowser();
      this.SuspendLayout();

// 
// monWebBrowser
// 
      this.monWebBrowser.Location = new System.Drawing.Point(0, -2);
      this.monWebBrowser.Name = "monWebBrowser";
      this.monWebBrowser.Size = new System.Drawing.Size(843, 645);
      this.monWebBrowser.TabIndex = 1;
      this.monWebBrowser.Navigating += new System.Windows.Forms.WebBrowserNavigatingEventHandler(this.monWebBrowser _Navigating);

// 
// FenetreWebBrowser
//
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(844, 644);
      this.Controls.Add(this.monWebBrowser);
      this.Load += new System.EventHandler(this.FenetreWebBrowser_Load);
      this.Name = "FenetreWebBrowser";
      this.Text = "FenetreWebBrowser";
      this.ResumeLayout(false);

    }

#endregion

/// <summary>
/// Point d'entrée principal de l'application.
/// </summary>

    [STAThread]
    static void Main() 
    {
      Application.Run( new FenetreWebBrowser() );
    }

    private void DistriGameWB_Load(object sender, System.EventArgs e)
    {

      // Variables inutiles dans la version 2005, mais indispensables dans les versions antérieures
      object o = url;
      object param = System.Reflection.Missing.Value;

      // Connection au site
      url = "http://www.un_site_avec_des_frames.com/";
      monBrowser.Navigate( url );
      // monAxWebBrowser1.navigate( ref o, ref param ) pour les versions précédentes

    }

    private void monWebBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
    {

      if (e.TargetFrameName == "NomDeLaFramePourLaquelleOnSouhaiteAvoirLeContenu")
      {
        strFrame = (string)monInet.OpenURL( e.Url, DataTypeConstants.icString );
      }

    }

  }

}

 Conclusion


En espérant que ce code vous aidera.

Ca fait plusieurs semaines (voire mois) que je cherche sur tous les forums une solution 100% C#. A défaut, j'avais utilisé VB6 pour faire ce petit bout de code (car VB6 permet d'accéder au innerHTML des frames). Sans succès.

En désespoir de cause, j'ai essayé cette solution... Ca a l'air de fonctionner, tout au moins pour mes propres besoins. Quelques adaptations seront peut-être nécessaires pour vous...

Dans le code ci-dessus, la navigation se fait sur l'événement Load de la fenêtre. Il est bien sûr possible de le déporter sur clic d'un bouton, ou tout autre méthode.


 Sources du même auteur

Source .NET (Dotnet) ACCÉDER AU CONTENU HTML D'UNE PAGE COMPORTANT DES FRAMES !!!...

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) HTTP FLOOD STRESS TEST par NightMareLmW
Source avec Zip Source avec une capture Source .NET (Dotnet) SERVEUR/ESCLAVE MODBUS TCP/IP par SteveFuchsIT
Source avec Zip Source avec une capture Source .NET (Dotnet) IPHELPER - PORTS TCP/UDP, TABLES DE ROUTAGE/ARP + FONCTIONS ... par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) [.NET3.5] SYSTEM.IO.PIPES - UTILISATION D'UN CANAL NOMMÉ par Willi
Source avec Zip Source .NET (Dotnet) MESSAGES PERSOS MSN par XelectroX

 Sources en rapport avec celle ci

Source .NET (Dotnet) ACCÉDER AU CONTENU HTML D'UNE PAGE COMPORTANT DES FRAMES !!!... par nedry

Commentaires et avis

Commentaire de nedry le 20/01/2005 12:50:31

Une petite erreur s'est glissée dans le code.

La ligne:

        // Supprime les messages d'erreur de scripts...
        monWebBrowser.ScriptErrorsSuppressed = true;

Doit être mise dans l'événement Load de la fenêtre et non dans son constructeur (sinon: plantage...)

Commentaire de gar6more le 22/09/2005 16:33:32

Bonjour,
D'après ce que je comprend tu a déjà fait cela en VB. Comment on fait. J'arrive pas à obtenir la source d'une frame contenue dans une page.
Tu pourrais m'aider ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Listview et base de donnée [ par fredza ] Salut,En C# est-il possible de remplir une listview (en mode détail avec le contenu d'une base de donnée) si oui comment ?Ma base est constituée de pl Afficher le contenu d'un fichier texte ??? [ par CoChOnOu ] Salut à tousBon voilà, je débute vraiment avec le C# alors ne m'en voulez pas si ma question vous semble ridicule ;-)Voilà, j'ai ajouté un fichier .tx Mise à jour frame à partir d'une autre frame [ par decan ] Bonjour,je souhaite mettre à jour une frame à partir des infos que je viens de sélectionner dans une autre frame.exemple : sélection d'une valeur dans Récupérer le contenu d'une page sous forme de string [ par ttornade ] Bjr tout le monde,je voudrais récupérer le contenu d'une page(par exemple télécharger une page html) et l'assigner à une variable de type string. Il y Text Field ... [ par maevacmoi ] Hello !Je voudrais afficher le contenu d'un fichier dans un textBox, en donnant la possibilité à l'utilisateur d'indiquer la source. J'ai fait des ess Récupération du contenu d'un site [ par ttornade ] Bjr tout le monde,je voudrais savoir s'il existe des objects en c# qui me permettent de rècupérer le contenu d'une page html à l'intérieur des frames [C#]Afficher contenu d'une variable dans une méthode static [ par jacma ] BonjourJe déclare une variable "private string strConn" au niveau de la classe 'j'ai aussi esayé public ou même rien), mais je ne peux pas en récupére imprimer le contenu d'un fichier xml [ par creanova2000 ] creanovabonjour je voudrai savoir comment je peux imprimer le contenu d'un fichier xmls'il vous plair est ce que vous pouver me donner un exemple.merc [C#] export du contenu d'un dataset vers un fichier texte [ par Michel0911 ] Bonjour,Comment faire pour pour lire chaque enregistrement d'un dataset et l'exporter vers un fichier texte ?Merci pour votre aide.Michel Passer le contenu d'une va d'un form à un autre [ par jeanajaccio ] salut à tous,Qq'un peut me dire ct passer le contenu d'une va d'un formulaire à l'autre ?Merci


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales