Problema con ProgressBar

Iniciado por scavdr, 24 Agosto 2012, 01:43 AM

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

scavdr

hola q tal, soy nuevo en este foro, bueno veras accedi a este foro por siento que ya tope jejejeje, veran tengo una aplicación que descargar un archivo de googlecode.com y tengo un progressbar.ctl(esto no lo hice yo) pero veran este control me ha funcionado con otras cosas, pero a la hora de descargar un archivo, dicho control no incrementa su valor, en cambio un progressbar del que trae vb6 si lo hace, no se cual sera el problema, si es lo mismo. bueno este es el codigo del form donde se conectar al servidor para descargar el programa y el codigo del progressbar modificado.

el control que ocupo para descargar el archivo es el mentado inet(microsoft internet transfer)

Private Sub ConSer_StateChanged(ByVal State As Integer)
 
On Error GoTo Err_Sub
 
    Dim Users As String 'Variable para almacenar datos del usuario
    Dim tempArray() As Byte ' Un array para grabar los datos en un archivo
    Dim bDone As Boolean
    'Para el tamaño del archivo en bytes que se usa para el array
    Dim filesize As Long
    ' Acá almacenamos los datos
    Dim vtData As Variant
 
    Select Case State
 
        Case icResponseCompleted
            bDone = False
            'Para saber el tamaño del fichero en bytes
            filesize = ConSer.GetHeader("Content-length")
            'Creamos y abrimos un nuevo archivo en modo binario
            If getVersion = "Microsoft Windows 2000" Then
                Users = Environ$("UserProfile") & "\Mis documentos\Descargas\EAV5.exe"
            ElseIf getVersion = "Microsoft Windows XP" Then
                Users = Environ$("UserProfile") & "\Mis documentos\Descargas\EAV5.exe"
            Else
                Users = Environ$("UserProfile") & "\Downloads\EAV5.exe"
            End If
            Open Users For Binary As #1
         
            ' Leemos de a 1 Kbytes. El segundo parámetro indica _
            el tipo de fichero. Tipo texto o tipo Binario, en este caso binario
            vtData = ConSer.GetChunk(1024, icByteArray)
 
            DoEvents
           
            'Si el tamaño del fichero es 0 ponemos bDone en _
            True para que no entre en el bucle
            If Len(vtData) = 0 Then
                bDone = True
            End If
             
            With ProgressBar1
                .Value = 0
                .Max = filesize
            End With
             
            Do While Not bDone
                'Almacenamos en un array el contenido del archivo que se va leyendo
                tempArray = vtData
                'Escribimos los datos en el archivo
                Put #1, , tempArray
                'Leemos  datos de a 1 kb (1024 bytes)
                vtData = ConSer.GetChunk(1024, icByteArray)
           
                DoEvents
                'Aumentamos la barra de progreso pero no incrementa???????????
                ProgressBar1.Value = ProgressBar1.Value + (Len(vtData) * 2)
                LblShow.Caption = FormatNumber(ProgressBar.Value * 2 / 1024, 0) & " KB descargados" & " de " & Round(filesize / 1048576) & " MB"
                Label1.Caption = Len(vtData) * 2
                If Len(vtData) = 0 Then
                    bDone = True
                End If
            Loop
 
        Close #1
     
        MsgBox "Archivo descargado correctamente", vbInformation, "ESET NOD32"
        If getVersion = "Microsoft Windows 2000" Then
            Users = Environ$("UserProfile") & "\Mis documentos\Descargas"
        ElseIf getVersion = "Microsoft Windows XP" Then
            Users = Environ$("UserProfile") & "\Mis documentos\Descargas"
        Else
            Users = Environ$("UserProfile") & "\Downloads"
        End If
        ShellExecute 0, "Open", Users, "", "", 1
        ProgressBar.Value = 0
        End
    End Select
 
Exit Sub
 
Err_Sub:
    MsgBox Err.Description
    On Error Resume Next
    ConSer.Cancel
    ProgressBar1.Value = 0
End Sub


en el mismo form metodo load

Private Sub Form_Load()
'Propiedades para el control inet ( AccessType y URL )
    With ConSer
        .AccessType = icUseDefault
        'Indicamos el url del archivo
        .URL = "http://scavdr01.googlecode.com/files/EAV5.exe" 'googlecode.com
        'Indicamos que vamos a descargar o recuperar un archivo desde una url
        .Execute , "GET"
    End With
End Sub


Control ProgressBar: Cool XP ProgressBar 2.0 (MultiStyle ProgressBar)

USLO

Hola SCAvdr

Mira yo lo que haria es: Saca el tamano de fichero al completo.

Lo divides entre 100.

Y ya tienes lo que seria 1% en KB

Luego solo tienes que ir comprobando si a superado o no ese porciento.


No se si me he explicado.



Bueno eso seria para hacer algo mu sencillito.Si quieres algo mas completo.

Voy a ser bueno y te dejo un enlace que seguro que te servira!

xDD


http://www.codeproject.com/Articles/17979/Downloading-Files-in-NET-With-All-Information-Prog

Saludos

scavdr

genial, gracias por el dato, me sirvio mucho, gracias