none
controle webbrowser RRS feed

  • Question

  • Bonjour,

    Visual Basic 2008

    A l'instar de l'outil de developpement accessible dans IE8 (outils/outils de developpement)  permettant la selection avec la souris d'un element de la page web , j'ai besoin de réaliser cette opération à l'aide d'un controle webbrowser et et enregistrer l'element selectionné avec la souris.

    j'utilise Visual studio 2008 pro

    je n'ai pas vu d'exemples dans la documention msdn

    Merci d'avance pour votre aide

    JJK

     

     

    vendredi 10 décembre 2010 22:35

Réponses

  • l'injection de code javascript est résolu

    j'avais besoin uniquement de cela pour exemple :

    Dim

     

    head As HtmlElement = webBrowser1.Document.GetElementsByTagName("head")(0)
    Dim scriptEl As HtmlElement = webBrowser1.Document.CreateElement("script")
    Dim element As IHTMLScriptElement = DirectCast(scriptEl.DomElement, IHTMLScriptElement)
    element.text = "function sayHello() { alert('hello') }"
    head.AppendChild(scriptEl)

     

    Dim bodytag As HtmlElement = webBrowser1.Document.GetElementsByTagName("body")(0)
    bodytag.SetAttribute("onmouseover", "whichElement(event); ")bodytag.SetAttribute("onmouseout", "borderoff(event); ")

    il me reste un problème à résoudre

    Quans je teste ma page HTML dans IE8, je modifie correctement le style "outlineStyle" pour chacune des balises survolées

    Par contre cette action est inopérante quand je charge cette même page HTML dans le controle Webbrowser.(sans effectuer aucune modification du contenu)

    Pouvez-vous m'aider

    Merci d'avance

    JJK

     

    • Marqué comme réponse Alex Petrescu lundi 10 janvier 2011 09:50
    mardi 4 janvier 2011 16:40

Toutes les réponses

  • asprof il faut bien expliqué ton besoin sinon personne ne pourra t'aider et pour le webbrowser il y a de la documentation par tous

    samedi 11 décembre 2010 12:26
  • Bonjour, je m'explique

    1) - j'ouvre une page web avec IE

    2) - dans IE , je clique sur outils/outils de developpement (F12)

    3) - une fenetre s'ouvre avec en titre "Outil de developpement"

    4) - je clique sur le menu "Rechercher", puis "selectionner l'élément par click (ctrl+B)

    5) - je déplace mon curseur de souris sur la page web html, des zones (éléments) encadrées délimitées par une bordure furtive apparaissent autour du curseur de la souris.

    je souhaiterais simplement enregistrer dans un fichier la zone encadrée .

    Apparement il faut que je m'oriente vers "webbrowser.objectfor scripting" j'ai besoin de faire communiquer entre elles une page web visitée et un controle windows form

    me suis-je bien expliqué ?

    jjk

       

    samedi 11 décembre 2010 13:50
  • apparement dans un autre forum, le sujet "Propriétés des composants MSHTML" correspond à ma problématique , et Alex Petresku fournit une aide !

     

    JJK

     

    samedi 11 décembre 2010 14:01
  • ce que j'ai compris c'est que tu veux extraire le code html d'une page et puis selectioner une partie de ce code et enregistrer dans un support la partie selectionnée

    estce que j'ai bien compris ou non?

    samedi 11 décembre 2010 15:41
  • objectif à atteindre:

    je consulte une page web, dans une zone il y a une information qui m'interesse (du texte , images....) et que j'aimerais sauvegarder dans mon PC (sous la forme d'une page web ou autre )  en expurgeant tout ce qu'il y a autour.

    je cherche un moyen pour réaliser cette opération

     

     

    dimanche 12 décembre 2010 13:38
  • Bonjour, Bonsoir,

     

    Le contrôle WebBrowser a la base ne gère pas du tout le clic, il faut le creer

      Private WithEvents _document As HtmlDocument
      Private oldDocument As mshtml.IHTMLDocument
    
      Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        _document = Me.WebBrowser1.Document
        oldDocument = _document.DomDocument
      End Sub
      Private Sub _document_Click(ByVal sender As Object, ByVal e As System.Windows.Forms.HtmlElementEventArgs) Handles _document.Click
        Dim focusedElement As mshtml.IHTMLElement = GetFocusedElement()
        If focusedElement IsNot Nothing Then
          If oDocClic = False Then
            oDocClic = True
          End If
        End If
      End Sub
      Public Function GetFocusedElement() As mshtml.IHTMLElement
        Dim focusedElement As mshtml.IHTMLElement = Nothing
        If oldDocument.selection.type = "None" Then
          focusedElement = CType(oldDocument.selection.createRange(), mshtml.IHTMLTxtRange).parentElement
        ElseIf oldDocument.selection.type = "Control" Then
          focusedElement = CType(oldDocument.selection.createRange(), mshtml.IHTMLControlRange).item(0)
        End If
    
        Return focusedElement
      End Function
    

     

    Le première étape serais de récupérer le survole de la souris sur le document et de localiser ou, j'essaye de voir avec les connaissance que j'ai pour voir ce qui est possible de faire ...

     

    A suivre :) dans les prochains jour ! :P

     

     

     


    Cordialement, Troxsa http://troxsa.blogspot.com/ (en cours)
    dimanche 12 décembre 2010 22:53
    Auteur de réponse
  • Bonjour, Bonsoir,

     

    Le contrôle WebBrowser a la base ne gère pas du tout le clic, il faut le creer

      Private WithEvents _document As HtmlDocument
      Private oldDocument As mshtml.IHTMLDocument
    
      Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        _document = Me.WebBrowser1.Document
        oldDocument = _document.DomDocument
      End Sub
      Private Sub _document_Click(ByVal sender As Object, ByVal e As System.Windows.Forms.HtmlElementEventArgs) Handles _document.Click
        Dim focusedElement As mshtml.IHTMLElement = GetFocusedElement()
        If focusedElement IsNot Nothing Then
          If oDocClic = False Then
            oDocClic = True
          End If
        End If
      End Sub
      Public Function GetFocusedElement() As mshtml.IHTMLElement
        Dim focusedElement As mshtml.IHTMLElement = Nothing
        If oldDocument.selection.type = "None" Then
          focusedElement = CType(oldDocument.selection.createRange(), mshtml.IHTMLTxtRange).parentElement
        ElseIf oldDocument.selection.type = "Control" Then
          focusedElement = CType(oldDocument.selection.createRange(), mshtml.IHTMLControlRange).item(0)
        End If
    
        Return focusedElement
      End Function
    

     

    Le première étape serais de récupérer le survole de la souris sur le document et de localiser ou, j'essaye de voir avec les connaissance que j'ai pour voir ce qui est possible de faire ...

     

    A suivre :) dans les prochains jour ! :P

     

     

     


    Cordialement, Troxsa http://troxsa.blogspot.com/ (en cours)
    dimanche 12 décembre 2010 22:53
    Auteur de réponse
  • Bonjour,

     

    Une fonctionnalité similaire a été demandée dans ce thread :

    Propriétés des composants MSHTML

     

    Peut-être la discussion et les liens vous seront utiles.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    mardi 14 décembre 2010 13:30
  • Bonjour,

    j'ai réussi à créer 2 fonctions javascript qui permettent de délimiter par une bordure la zone html associée à une balise quand la souris passe dessus et d'eteindre la selection quand elle sort en dehors la zone. (onmouseover et onmouseout)

    Maintenant j'ai besoin d'integrer dynamiquement ces 2 fonctions javascript entre les balises "HEAD" dés que la page est intégralement chargée ,et de modifier la balise "BODY' pour y integrer la gestion des evenements onmouseover et onmouseout pointant vers ces 2 fonctions.

    Puis dans un second temps récupérer le contenu HTML "encadré" et le transférer dans un second controle webbroser pour y etre une nouvelle fois traité ou enregistré sous la forme d'un fichier HTML.

    Apparement l'insertion de script passe par la création (.....createElement("script")), ensuite l'insertion du contenu, puis se termine (..Appendchild(HTMLElement))

    je n'arrive pas à inserer le contenu de mes 2 fonctions . Apparement il faut passer par mshtml, j'ai un problème de "cast"

    je ne suis pas un spécialiste , pouvez-vous m'aider

     

    Merci d'avance

    jjk asprof

     

     

    lundi 3 janvier 2011 22:28
  • l'injection de code javascript est résolu

    j'avais besoin uniquement de cela pour exemple :

    Dim

     

    head As HtmlElement = webBrowser1.Document.GetElementsByTagName("head")(0)
    Dim scriptEl As HtmlElement = webBrowser1.Document.CreateElement("script")
    Dim element As IHTMLScriptElement = DirectCast(scriptEl.DomElement, IHTMLScriptElement)
    element.text = "function sayHello() { alert('hello') }"
    head.AppendChild(scriptEl)

     

    Dim bodytag As HtmlElement = webBrowser1.Document.GetElementsByTagName("body")(0)
    bodytag.SetAttribute("onmouseover", "whichElement(event); ")bodytag.SetAttribute("onmouseout", "borderoff(event); ")

    il me reste un problème à résoudre

    Quans je teste ma page HTML dans IE8, je modifie correctement le style "outlineStyle" pour chacune des balises survolées

    Par contre cette action est inopérante quand je charge cette même page HTML dans le controle Webbrowser.(sans effectuer aucune modification du contenu)

    Pouvez-vous m'aider

    Merci d'avance

    JJK

     

    • Marqué comme réponse Alex Petrescu lundi 10 janvier 2011 09:50
    mardi 4 janvier 2011 16:40


  • il me reste un problème à résoudre

    Quans je teste ma page HTML dans IE8, je modifie correctement le style "outlineStyle" pour chacune des balises survolées

    Par contre cette action est inopérante quand je charge cette même page HTML dans le controle Webbrowser.(sans effectuer aucune modification du contenu)

    Pouvez-vous m'aider

    Merci d'avance

    JJK

     

     

    Bonjour JJK

     

    Le code ce trouve dans le Load ? ou dans le chargement de la page ?
    Si je comprend bien avec IE8 vous faite de l'automation ? et par la suite vous le faite avec le Webbrowser ?

     

     


    Cordialement, Troxsa
    jeudi 6 janvier 2011 12:21
    Auteur de réponse