Besoin d'aide sur conversion vers VB.net

OverLeX Messages postés 7 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 11 janvier 2008 - 9 janv. 2008 à 19:33
OverLeX Messages postés 7 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 11 janvier 2008 - 11 janv. 2008 à 10:21
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

OverLeX Messages postés 7 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 11 janvier 2008
9 janv. 2008 à 19:35
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
9 janv. 2008 à 20:56
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
9 janv. 2008 à 20:59
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
0
OverLeX Messages postés 7 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 11 janvier 2008
9 janv. 2008 à 21:41
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
9 janv. 2008 à 22:49
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
0
OverLeX Messages postés 7 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 11 janvier 2008
10 janv. 2008 à 09:37
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.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
10 janv. 2008 à 10:39
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
0
OverLeX Messages postés 7 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 11 janvier 2008
10 janv. 2008 à 17:46
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+
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
10 janv. 2008 à 18:54
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))
0
OverLeX Messages postés 7 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 11 janvier 2008
11 janv. 2008 à 10:21
Non non, il renvoie bien le texte qui est affiché par le navigateur, pas le code source.
Essaie, tu veras.

A+
0
Rejoignez-nous