Bonjour,
J'ai un petit probleme avec une application winform que j essais de mettre au point.
le but est de mettre en place un webbrowser, dans l appli, et de récuperer certaines informations contenu dans l html.
( je precise que je ne souhaite pas injecter du js dans les pages, via invoke )
Donc l application, charge l url au demarage, une fois que celle ci est complete je met en place un timer afin de recuperer les infos ( timer car des requetes ajax décalle le chargement de certaines parties de l html ...)
en gros cela donne ca ( simplifié ... ) :
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 Public Class navigateur Public journal As log = Nothing Private time As System.Timers.Timer Private Sub navigateur_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.journal = New log(Me.RichTextBox1) journal.assert_debug("navigateur_Load") End Sub Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted WebBrowser1.ScriptErrorsSuppressed = False journal.assert_debug("DocumentCompleted") add_event_timer() End Sub Private Sub WebBrowser1_Navigating(sender As Object, e As WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating supp_event_timer() journal.assert_debug("navigating") End Sub Protected Sub add_event_timer() time = New System.Timers.Timer() time.Interval = 500 time.Start() AddHandler time.Elapsed, New System.Timers.ElapsedEventHandler(AddressOf analyse_page) End Sub Public Sub analyse_page() If (WebBrowser1.Document IsNot Nothing) Then Dim TableElem As HtmlElement = WebBrowser1.Document.GetElementById("contentWrapper") RichTextBox1.Text = RichTextBox1.Text & TableElem.InnerHtml.ToString & vbCrLf End If End Sub
cela me retourne un
System.InvalidCastException was unhandled by user code
HResult=-2147467262
Message=Specified cast is not valid.
Source=System.Windows.Forms
StackTrace:
at System.Windows.Forms.UnsafeNativeMethods.IHTMLDocument2.GetLocation()
at System.Windows.Forms.WebBrowser.get_Document()
at iextense.navigateur.analyse_page()
at iextense.navigateur._Lambda$__1(Object a0, ElapsedEventArgs a1)
at System.Timers.Timer.MyTimerCallback(Object state)
InnerException:
je precise que via un button ca fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub TestToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TestToolStripMenuItem.Click If (WebBrowser1.Document IsNot Nothing) Then Dim TableElem As HtmlElement = Me.WebBrowser1.Document.GetElementById("contentWrapper") RichTextBox1.Text = RichTextBox1.Text & TableElem.InnerText & vbCrLf end if End Sub
voila, vous savez tout
visual basic 12
seven
.net 4
je pense que le webbrowser doit etre innacessible, ...
j ai testé plein de solution sans trouvé la bonne
avez vous des pistes de recherche ...
Partager