Besoin d'aide sur conversion vers VB.net

Signaler
Messages postés
7
Date d'inscription
mercredi 15 septembre 2004
Statut
Membre
Dernière intervention
11 janvier 2008
-
Messages postés
7
Date d'inscription
mercredi 15 septembre 2004
Statut
Membre
Dernière intervention
11 janvier 2008
-
Bonjour à tous,

Pouvez vous m'aider à convertir ce bout de code VB6 vers VB.net :
<li>Attribute VB_Name = "moduleclipboard"
</li><li>Dim oIE ',MyWord</li><li>
</li><li>PublicSub Ouvrirhtm(url AsString, tim As Timer, Optional txt AsString, Optional src AsString)
</li><li>Dim m AsDouble</li><li>
</li><li>HTMLFileIn = url
</li><li>Set oIE = CreateObject("InternetExplorer.Application")
</li><li>DoEvents
</li><li>oIE.Navigate HTMLFileIn
</li><li>DoEvents
</li><li>Call Attend(tim)
</li><li>'recuperons le code html</li><li>src = oIE.document.documentelement.innerhtml
</li><li>DoEvents
</li><li>'recuperons le texte de la page html (copier-coller)</li><li>oIE.document.body.createTextRange.execCommand ("Copy")
</li><li>DoEvents
</li><li>Call Attend(tim)
</li><li>txt = Clipboard.GetText()
</li><li>oIE.Quit
</li><li>Set oIE = Nothing</li><li>
</li><li>EndSub</li><li>Sub Attend(tim As Timer)
</li><li>tim.Interval = 500
</li><li>While oIE.busy
</li><li> tim.Interval = 1000
</li><li>Wend</li><li>While oIE.document.readyState <> "complete"
</li><li> tim.Interval = 1000
</li><li>Wend</li><li>EndSub</li>

J'ai essayé plusieurs trucs, mais je n'y arrive vraiment pas ! En fait VB.net ne comprend oIE même déclaré en tant qu'objet.
Merci de m'aider

10 réponses

Messages postés
7
Date d'inscription
mercredi 15 septembre 2004
Statut
Membre
Dernière intervention
11 janvier 2008

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Salut

Explique le but de ton programme,
si c'est de capturer une page internet et de la parser apres, il y a bien plus simple en dotnet

Exemple
http://msdn2.microsoft.com/fr-fr/library/system.net.webrequest(VS.80).aspx

Avantage plus simple a maintenir, plus propre et plus rapide.

That's all
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Pas forcément simple à trouver, mais quand même plus simple en terme de syntaxe :

Public Sub Ouvrirhtm(ByVal url As String, Optional ByRef txt As String = "", Optional ByVal src As String = "")

        Dim req As Net.HttpWebRequest
        Dim res As Net.HttpWebResponse
        Dim HTMLFileIn As String = url
        req = Net.HttpWebRequest.Create(HTMLFileIn)
        res = req.GetResponse

        Dim sr As New IO.StreamReader(res.GetResponseStream,
System.Text.Encoding.GetEncoding(0))
        txt = sr.ReadToEnd

        res.Close()
End Sub

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7
Date d'inscription
mercredi 15 septembre 2004
Statut
Membre
Dernière intervention
11 janvier 2008

merci beaucoup à vous deux.

en fait je veux récupérer le texte de la page html et non de le code source.

casy : j'ai essayé ta méthode et je récupère correctement le code source de ma page. Mais est-il possible avec ta méthode de récupérer le texte de la page et non le code source ?
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Je pense qu'une simple regexp peut suffir

Dim strInput As String
Dim strOutput As String
strInput = Text1.Text
strOutput = Regex.Replace(strInput, "<[^>]*>", " ")   
output.Text = strOutput
output_raw.Text = Server.HtmlEncode(Text1.Text)

Bon courage
Messages postés
7
Date d'inscription
mercredi 15 septembre 2004
Statut
Membre
Dernière intervention
11 janvier 2008

j'ai remplacé le Regex par System.Text.RegularExpressions.Regex mais il ne comprend pas le type HttpApplication pour Server donc je n'ai pas pu exécuter ton code. Mais ce code parse le code source si j'ai bien compris ? parce que j'ai déjà des fonctions pour ça mais je me retrouve toujours avec un texte pas très propre, c'est pour ça que je voudrais appliquer la même méthode que le code que j'ai mis au début.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Il semble que execommand est disponible en dotnet

cf
http://ryanfarley.com/blog/archive/2004/12/23/1330.aspx

Une fois que ca fonctionne n'hesite pas a mettre ta solution
Messages postés
7
Date d'inscription
mercredi 15 septembre 2004
Statut
Membre
Dernière intervention
11 janvier 2008

Bon en fait, j'ai trouvé la solution autrement. voilà pour ceux que ça intéresse :

Dim str As String
Dim uri As Uri = New Uri("monUrl")

WebBrowser1.Navigate(uri)

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        str = WebBrowser1.Document.Body.InnerText
 End Sub

Cette méthode marche également si vous définissez une page html en local dans "monUrl"

Après avoir cherché sur des méthodes compliqué, je me rends qu'en fait c'était super simple

J'espère que ca pourra servir pour d'autres

A+
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Ta méthode renvoie le code source de la page il me semble.
Mais que de la partie body.

C'est pas l'equivalent d'un copier (qui lui doit utiliser le clipboard (copier coller))
Messages postés
7
Date d'inscription
mercredi 15 septembre 2004
Statut
Membre
Dernière intervention
11 janvier 2008

Non non, il renvoie bien le texte qui est affiché par le navigateur, pas le code source.
Essaie, tu veras.

A+