Buenas Noches
Actualmente tengo el código en VB NET de un programa que carga una página en un WebBrowser y en el sub de DocumentComplete realiza una función
ahora quiero hacer el mismo proceso varias veces (actualmente lo que hago es abrir varias veces el programa)
pero si lo hago necesito crear WebBrowsers de manera Dinámica esto lo logro sin problemas
Dim wb1 As WebBrowser
wb1 = New WebBrowser
wb1.Navigate("http://www.google.com")
se me ocurre crear varias instancias como sean necesarias de la manera
wb1
wb2
wb3
wb4
etc....
pero como puedo manejar el evento DocumentComplete del webbrowser, seria la misma función para todos los navegadores algo así como
Private Sub wb1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles wb1.DocumentCompleted
pero hacer que el Handles maneje wb1.DocumentCompleted, wb2.DocumentCompleted, wb3.DocumentCompleted
algo así
Private Sub wb1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles wb1.DocumentCompleted, wb2.DocumentCompleted, wb3.DocumentCompleted
como hago para hacer esto dinámicamente
Saludos =D
La instrucción para agregar Handles en tiempo de ejecución es
AddHandler OBJETO.EVENTO, AddressOf SUB
Ejemplo:
Dim X As New Button
X.Text = "EJEMPLO"
AddHandler X.Click, AddressOf EJEMPLO_Click
Private Sub EJEMPLO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Que quieres hacer con varias instancias?, si explicas más quizás te pueda aconsejar una manera mejor.
Threads ?
Lo que hace el programa es cargar la página http://miserver.com/formulario.php?numero= numero.text en el navegador (el archivo php automáticamente hace un SUBMIT al formulario a http://otrapagina.com/submit.php
entonces en el document complete si la URL actual es http://otrapagina.com/submit.php
aumentamos la variable CANTIDAD y si cantidad es MENOR a cantidad.text
cargamos nuevamente http://miserver.com/formulario.php?numero.text
lo que hace el programa es enviar mensajes de texto a un celular (como esos de publicidad de destruye 5 iphones y gana un tono y te piden que metas tu numero de celular y te llega un código) entonces si pongo un numero y quiero que le llegue ese mensaje 5 veces pongo su numero y cantidad 5
entonces carga 5 veces el formulario de envio
Realmente es para jugarle bromas a mis amigos o molestar gente =D
pero lo que quiero es poder enviar a varios numeros en una sola instancia del programa
Si, los Threads me pueden servir, pero no se como aplicarlo exactamente una manera de solucionarlo fue hacer esto:
Dim continuar As Boolean
Dim wb1 As WebBrowser
Dim cantidad As Integer
cantidad = 0
nexti:
If cantidad = 5 Then Exit Sub
continuar = True
wb1 = New WebBrowser
wb1.Navigate("http://www.MISERVIDOR.com/form.php?1=1234567890")
Do While continuar = True
If wb1.CanGoBack Then
continuar = False
cantidad = cantidad + 1
GoTo nexti
End If
Loop
de esta manera logro que se envien los mensajes sin problema, pero como hago para repetir este proceso n veces, supongo que como dicen es con Threads
Se podria hacer con un simple webbrowser no ? o.O
En teoria seria asi:
Ocuparemos un contador iniciado en 0, luego el webbrowser y ya finalmente pues en el metodo de webbrowserdocumentcomplete
solo mandamos desde otro metodo la primera vez que carga la web ejemplo desde el sub de un click
Dim cont as integer = 0
Private Sub Click(blablabla)
codigo blablabla
WebBrowser1.Navigate("http://www.MISERVIDOR.com/form.php?1=1234567890")
End Sub
private sub WebBrowser1_DocumentComplete(blablbla)
if cont < contador.text then
cont += 1
WebBrowser1.Navigate("http://www.MISERVIDOR.com/form.php?1=1234567890")
end if
end sub
Eso cada vez que termine de cargarse la web hara eso y checara, ya si quieres que cheque tmb que este en la url de
http://otrapagina.com/submit.php
hay una propiedad del webbrowser que te lo indica, entonces solamente en ese if agregamos esa validacion de que solamente entre en el cuando cargue completamente la web de esa url.
Si asi es como lo tengo originalmente
pero lo que quiero haces es poder repetir ese mismo proceso varias veces
poder enviar a varios numeros al mismo tiempo
algo asi como copiar y pegar el navegador y el sub de document complete
Desde el principio como tu mismo lo planteastes y como te explique en mi primer comment, debes crear varias instancias WebBrowser puede ser un Array de WebBrowser y crear un Sub preparado para recibir los eventos que necesites, agregar Handles con AddHandler recorriendo el Array. Cuando mandes a los WebBrowser a navegar simplemente debes recorrer el Array y usar la instrucción .Navigate
De esta manera todo se hara al mismo tiempo.