Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Rudy21 en 21 Septiembre 2011, 05:10 am



Título: Crear Objeto Desde Código
Publicado por: Rudy21 en 21 Septiembre 2011, 05:10 am
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
Código:
        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

Código:
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í
Código:
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



Título: Re: Crear Objeto Desde Código
Publicado por: Keyen Night en 21 Septiembre 2011, 05:26 am
La instrucción para agregar Handles en tiempo de ejecución es

Código
  1. AddHandler OBJETO.EVENTO, AddressOf SUB

Ejemplo:

Código
  1.        Dim X As New Button
  2.        X.Text = "EJEMPLO"
  3.        AddHandler X.Click, AddressOf EJEMPLO_Click
  4.  
  5.    Private Sub EJEMPLO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  6.  
  7.    End Sub
  8.  

Que quieres hacer con varias instancias?, si explicas más quizás te pueda aconsejar una manera mejor.


Título: Re: Crear Objeto Desde Código
Publicado por: seba123neo en 21 Septiembre 2011, 06:15 am
Threads ?


Título: Re: Crear Objeto Desde Código
Publicado por: Rudy21 en 21 Septiembre 2011, 06:24 am
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


Título: Re: Crear Objeto Desde Código
Publicado por: Rudy21 en 21 Septiembre 2011, 06:35 am
Si, los Threads me pueden servir, pero no se como aplicarlo exactamente una manera de solucionarlo fue hacer esto:

Código:

        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



Título: Re: Crear Objeto Desde Código
Publicado por: .mokk. en 21 Septiembre 2011, 07:17 am
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
  1. Dim cont as integer = 0
  2. Private Sub Click(blablabla)
  3.   codigo blablabla
  4.   WebBrowser1.Navigate("http://www.MISERVIDOR.com/form.php?1=1234567890")
  5. End Sub
  6.  
  7. private sub WebBrowser1_DocumentComplete(blablbla)
  8.   if cont < contador.text then
  9.      cont += 1
  10.      WebBrowser1.Navigate("http://www.MISERVIDOR.com/form.php?1=1234567890")
  11.   end if
  12. end sub
  13.  

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.


Título: Re: Crear Objeto Desde Código
Publicado por: Rudy21 en 21 Septiembre 2011, 17:23 pm
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


Título: Re: Crear Objeto Desde Código
Publicado por: Keyen Night en 21 Septiembre 2011, 18:00 pm
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.