Crear Objeto Desde Código

Iniciado por Rudy21, 21 Septiembre 2011, 05:10 AM

0 Miembros y 1 Visitante están viendo este tema.

Rudy21

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



Keyen Night

La instrucción para agregar Handles en tiempo de ejecución es

Código (vb.net) [Seleccionar]
AddHandler OBJETO.EVENTO, AddressOf SUB

Ejemplo:

Código (vb.net) [Seleccionar]

        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.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Rudy21

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


Rudy21

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



.mokk.

#5
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

Código (vb.net) [Seleccionar]

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.

Rudy21

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


Keyen Night

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.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...