Los foros del Guille

Ya está a la venta Novedades de Visual Basic 9.0

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 
Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

19/Jan/2006
Antes de hacer una pregunta... te recomiendo que busques si ya tiene respuesta.
En la página de búsqueda he añadido una nueva opción para que busque en los que ya tienen respuesta correcta.

  Foro: .NET VB Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 52050 - Problema con codigo en VB.Net - Bucle y Wait
IDAsuntoFechaNick 
52050 Problema con codigo en VB.Net - Bucle y Wait06/03/10 13:27marcelo_vm77   
Hola, tengo un problema con un codigo de Visual Basic (estoy usando la vesión 2008)... De más está decir que soy novato en esto de la programación =P
pero espero explicarme bien asi me entienden...

Esta es la parte del codigo en cuestion:
Private Sub cmd_firmar
    _Click(ByVal sender As System.Object, ByVal e As
     System.EventArgs) Handles cmd_firmar.Click
    Dim contar As Integer = 0
    With CheckedListBox1
        For i = 1 To .CheckedItems.Count
            contar = contar + 1
        Next
        If contar <= 10 Then
            For navegar As Integer = 1 To .CheckedItems.Count
                Try
                    Label5.Text = .GetItemText(.CheckedItems.Item(navegar))
                    navegador2.Navigate(.GetItemText(.CheckedItems.Item(navegar)))
                    Wait(2)
                Catch

                End Try
            Next
        Else
            MsgBox("Se pueden seleccionar como máximo 10 metroflogs a firmar.")
        End If
        If contar = 0 Then
            MsgBox("Debes seleccionar al menos un metroflog a firmar")
        End If
    End With
End Sub
Private Sub navegador2
    _DocumentCompleted(ByVal sender As System.Object, ByVal e As
     System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles navegador2.DocumentCompleted
        navegador2.Document.GetElementById("mensaje").InnerText() = tb_mensaje.Text
        navegador2.Document.GetElementById("enviarmensaje").InvokeMember("click")
    End Sub
Private Sub Wait(ByVal nSec As Integer)
    'Esperar un número de segundos
    Dim t1 As Integer, t2 As Integer

    t1 = Second(Now)
    t2 = t1 + nSec
    Do
        'DoEvents()
    Loop While t2 > Second(Now)
End Sub

El problema esta en la parte del "Wait(2)", se pausa por dos segundos, pero antes que el bucle empieze , por lo que el webbrowser solo navega a el ultimo link seleccionado de la checkedlistbox...
alguien puede darme una mano ?


EDITO: Me falto decir que estoy intentando hacer "bot" que "devuelva" las firmas de metroflog xD
[Editado: marcelo_vm77, 06/03/2010 13:28:16]
IDAsuntoFechaNick 
52060 Re: Problema con codigo en VB.Net - Bucle y Wait (Resp: 52050)07/03/10 00:58luis1952   
pon:

Private vUrl As String = ""
Private vSwCompletadaWeb As Boolean = False

    Private Sub EsperaCargaWeb()
        Do Until vSwCompletadaWeb
            Windows.Forms.Application.DoEvents()
        Loop
        vSwCompletadaWeb = False
    End Sub

    Private Sub WebBrowser1
        _DocumentCompleted(ByVal sender As System.Object, ByVal e As
         System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        If e.Url = New Uri(vUrl) Then
            vSwCompletadaWeb = True
        End If
     End Sub

el lo tuyo

Private Sub cmd_firmar
    _Click(ByVal sender As System.Object, ByVal e As
     System.EventArgs) Handles cmd_firmar.Click
    Dim contar As Integer = 0
    With CheckedListBox1
        For i = 1 To .CheckedItems.Count
            contar = contar + 1
        Next
        If contar <= 10 Then
            For navegar As Integer = 1 To .CheckedItems.Count
                Try
                    Label5.Text = .GetItemText(.CheckedItems.Item(navegar))
' pon aqui la url
vUrl=.GetItemText(.CheckedItems.Item(navegar))
' llama a navigate
                    navegador2.Navigate(New Uri(vUrl))
' espera
    EsperaCargaWeb()
' recoge resultados
navegador2.Document.GetElementById("mensaje").InnerText() = tb_mensaje.Text
    navegador2.Document.GetElementById("enviarmensaje").InvokeMember("click")



                Catch

                End Try
            Next
        Else
            MsgBox("Se pueden seleccionar como máximo 10 metroflogs a firmar.")
        End If
        If contar = 0 Then
            MsgBox("Debes seleccionar al menos un metroflog a firmar")
        End If
    End With
End Sub

El proceso es:
Poner la url de la pagina para comprobar que el evento DocumentCompleted corresponde a esa pagina porque puede ocurrir que sea de la anterior. Cuando el evento es el de la pagina (la misma url) pone el sw a true y el buche de espera termina

Espero que funcione porque aun asi, a veces .....

Saludos

[Editado: luis1952, 07/03/2010 00:59:26]
[luis1952, 07/03/2010 01:01:09]
[luis1952, 07/03/2010 01:03:01]


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
52065 Re: Problema con codigo en VB.Net - Bucle y Wait (Resp: 52050)07/03/10 09:57marcelo_vm77   
Muchisimas gracias !!! rie
con esto puedo terminar...


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2010  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.1433)
 
Usuarios activos: 263 - App. iniciada: 9/9/2010 1:11:11 AM GMT - La hora GMT del servidor es: 10/09/2010 05:46:40 GMT