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# Discussion :

C# NET - Recherche composant comme "webbrowser"


Sujet :

C#

  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Par défaut C# NET - Recherche composant comme "webbrowser"
    Hello,

    Je recherche un composant webbrowser qui fasse:
    - Qui soit non bloquant (obligé), --> qu'il ne bloque pas le reste de l'application

    - Si possible, possibilité de désactiver temporairement JS/Flash/CSS


    --> Connaissez-vous svp un composant qui fasse ça ?
    --> Ou comment créer un webbrowser "non bloquant" ? (c'est le + important pour moi), vu qu'il est integré dans l'appli WinForms.



    Merci d'avance ^^

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Anified Voir le message
    Hello,

    Je recherche un composant webbrowser qui fasse:
    - Qui soit non bloquant (obligé), --> qu'il ne bloque pas le reste de l'application

    - Si possible, possibilité de désactiver temporairement JS/Flash/CSS


    --> Connaissez-vous svp un composant qui fasse ça ?
    --> Ou comment créer un webbrowser "non bloquant" ? (c'est le + important pour moi), vu qu'il est integré dans l'appli WinForms.



    Merci d'avance ^^
    Il ne me semble pas que le composant webbrowser par défaut soit bloquant, je viens de tester et je n'ai pas vu de signe de bloquage.

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Par défaut
    En fait, lorsqu'on utilise Navigate() avec le webbrowser, pendant que la page charge, cela ralentit bien toute l'application. (1-2 secondes).

    Le problème est que je fois rafraichir souvent la page, il faudrait donc que ça soit un autre processus qui s'en occupe.

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Anified Voir le message
    En fait, lorsqu'on utilise Navigate() avec le webbrowser, pendant que la page charge, cela ralentit bien toute l'application. (1-2 secondes).

    Le problème est que je fois rafraichir souvent la page, il faudrait donc que ça soit un autre processus qui s'en occupe.
    Et avec la méthode BeginInvoke du webbrower ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public delegate void MyDelegate(WebBrowser browser, string url);
     
    private void button2_Click(object sender, EventArgs e)
    {
        string url = textBox1.Text;
     
        webBrowser1.BeginInvoke(new MyDelegate(Navigate), new object[] { webBrowser1, url });
    }
     
    public void Navigate(WebBrowser browser, string url)
    {
        browser.Navigate(url);
    }

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Par défaut
    Merci bcp.

    Je dois ensuite effectuer une boucle sur le "document.all" du webbrowser, la fonction utilise aussi un DataSet de la Form principale, avec ce code est que je pourrais utiliser ma fonction ?

    Car c'est surtout la boucle qui prend le + de temps en fait.

  6. #6
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Alors en fait j'ai un gros doute sur le fait que ce soit exécuté sur un autre thread, je crois que c'est pas la cas même.

    Executes the specified delegate asynchronously on the thread that the control's underlying handle was created on.
    On va dire que c'est pas non plus super clair (tout du moins je comprends pas top top). Le handle sous-jacent du contrôle

  7. #7
    Membre confirmé
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Par défaut
    En fait j'ai:

    1) 1 webbrowser

    2) Une fonction Navigate() lancée très souvent (manuellement, c'est pour choisir une page web --> annuaire)

    3) Lorsque le document est chargé, je lance une fonction qui remplit les champs de la page.


    Ce que je recherche, c'est faire ceci de façon asynchrone, et que si par exemple on relance Navigate() que l'on stoppe le remplissage des champs (donc on ferme le thread par ex) et on lance un nouveau

  8. #8
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Donc c'est pas le webbrower qui est bloquant, c'est tes actions dessus (remplir les champs...).

    Alors je suis pas un spécialiste du multithreadage, mais ceci peut peut-être fonctionner (si un pro des thread peut donner son avis).

    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
    Thread mThread = null;
     
    private void button2_Click(object sender, EventArgs e)
    {
        if (mThread != null && mThread.IsAlive == true)
        {
            mThread.Abort();
        }
     
        mThread = new Thread(new ThreadStart(Navigate));                
        mThread.Start();
    }
     
    public void Navigate()
    {
        webBrowser1.Navigate(textBox1.Text);
        // traitement super long (ptet dans l'evenement Navigated d'ailleurs)
    }

  9. #9
    Membre confirmé
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Par défaut
    Merci pour le code ^^


    Par contre le problème est que pour le traitement j'ai besoin d'acceder à un DataSet ainsi qu'au WebBrowser (MainForm) depuis ... le thread.

    Et ça ne marche pas (pas autorisé directement), on m'a conseillé d'utiliser des "Delegate" ?

  10. #10
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Anified Voir le message
    Et ça ne marche pas (pas autorisé directement), on m'a conseillé d'utiliser des "Delegate" ?
    Comment ça ça ne marche pas ?
    Utiliser les delegate : oui pourquoi pas mais là comme ça c'est un peu flou pour moi. Des détails ?

  11. #11
    Membre confirmé
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Par défaut
    Le problème est: comment acceder à un composant (Form.DataSet ou Form.WebBrowser) depuis un thread ?

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.Net 1.1] Comment "échapper" une quote ?
    Par arnolem dans le forum VB.NET
    Réponses: 1
    Dernier message: 07/09/2006, 10h39

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