• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Triple

[VB.NET] Como fazer um Download Manager?

27 mensagens neste tópico

Boas,

É assim eu preciso de fazer um download manager em VB, um simples... basta dar para fazer multiplos downloads ao mesmo tempo, pausar, cancelar etc. Mas não faço a minima de como fazer isto :dontgetit: Agradecia qualquer ajuda que pudessem dar.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na que der mais jeito xD Por isso não coloquei a tag... explica-me no que souberes fazer... se souberes fazer ^^

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

acho que em vb 2005 talvez fosse mais fácil... por causa da framework e isso... mas em vb6 tb não deve ser muito difícil lol  :hmm:

é assim acho que primeiro deves escrever em qualquer lado as funcionalidades que o programa irá ter, depois deves desenhar (traços gerais), num papel por exemplo,  a maneira como queres fazer o interface. com isto acho que já ficas com o programa minimamente estruturado na tua cabeça, facilitando assim as pesquisas a fazer para poderes criar o programa...

podes começar, por exemplo, por procurar como fazer download de ficheiros da Internet, penso que isto será o aspecto principal do teu programa, a partir daí é só começar a implementar outras funcionalidades no teu programa, como por exemplo o download de vários ficheiros ao mesmo tempo, parar o download, cancelar, etc.

cumps  :)

ps.: isto é apenas a minha opinião, eu costumo fazer sempre +/- isto lol ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema está mesmo ai... eu já estive a pesquisar por winsock no google, mas não me mostra como é que eu salvo um ficheiro num local do disco...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

com winsock acho q n fazes downloads lol

fiz uma pesquisa rápida em macoratti.net e encontrei istohttp://www.macoratti.net/vbn_dhtp.htm , com umas adaptações deves conseguir fazer download de um ficheiro.

agora n te posso ajudar mais... lol tenho a janta ao lume ;) se fdo o jantar a minha mãe mata-me... mais logo procuro melhor se tiver tempo :)

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso parece que só mostra o conteudo de .html para além de não guardar xD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

espero que ajude :)

Dim a As New System.Net.WebClient

a.DownloadFile("http://exemplo.no.sapo.pt/ficheiro.pdf", "c:\ficheiro.pdf")

isto é código de vb2k5

cumps ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já instalei o 2005 e vou tentar amanha =) Obrigado pela ajuda 5* :) Amanha digo se consegui ^^

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

com o VB 6 tens k usar o component: Microsoft Internet Control

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Estive a tentar fazer a estrutura da aplicação mas deparei-me com um problema, eu queria fazer uma DataGrid que mostrasse os ficheiros que estavam a ser transferidos, velocidade, nome, tamanho, etc. Como é que vou fazer para quando fechar a aplicação ela guarde essa info toda mais o que já foi transferido dos ficheiros para quando o programa fosse novamente aberto o utilizador poder continuar de onde deixou o download. E como é que eu faço essa informação aparecer na DataGrid?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso da informaçao podes fazer recorrendo a uma base de dados, agora isso de fazer "resume" aos downloads acho que não vai ser assim tão facil :s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois =X mas isso era importante... O FlashGet guarda aquilo que já foi transferido num ficheiro, não posso fazer o mesmo? Quanto a guardar isso numa BD, eu queria que o utilizador não tivesse acesso a essa informação sem ser pela aplicação.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu falei numa base de dados como exemplo, acho que não há problema em usar um ficheiro de texto. se usares uma base de dados basta colocares uma password que o utilizador já "não" consegue aceder à informação.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora fui tentar usar o DownloadFile mas deu-me erro =X

Código

Public Class Form1

    Private Sub ToolStripButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click

        Dim down As New System.Net.WebClient

        down.DownloadFile("http://down6.flashget.com/fgf173.exe", "c:\")

    End Sub

End Class

"WebException was unhandled"

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esqueçe já percebi o que estava a fazer mal =)

Estive agora a ver e li que para fazer aquilo do pause/resume podia usar o DownloadData, que descarga a informação para uma variavel de Byte em vez de descargar para um ficheiro do disco. Eu podia gravar isso num ficheiro e quando o programa voltasse a abrir começava o download a partir desse ponto. Mas não faço ideia como fazer isto =X

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

 Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim address As String = ("http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip")
        Dim url As New Uri(address)
        bytReturn = down.DownloadDataAsync(url)
    End Sub

Alguem é capaz de me explicar porque é que isso dá erro? diz que "Expression does not produce a value." na linha do DownloadDataAsync.

Penso que assim já consigo mandar escrever a variavel que fica com os bytes (bytReturn) num ficheiro que depois posso ir buscar e continuar de onde acabei (ainda falta descobrir esta parte)

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso era capaz de ser mais fácil de fazer usando sockets para poderes trabalhar com os headers dos pacotes HTTP e com outros protocolos para além deste :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

djthyrax isto vai servir só para http e quanto aos headers penso que também é possivel trabalhar assim... O que me está a chatiar é aquilo dar aquele erro n sei pk...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Public Class Form1
    Dim down As New System.Net.WebClient
    Dim bytReturn As Byte
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As New Uri("http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip")
        bytReturn = down.DownloadDataAsync(a)
    End Sub
    Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
        down.Dispose()
        Dim s1 As IO.FileStream
        s1 = New IO.FileStream("C:\ficheiro.zip", IO.FileMode.Create, IO.FileAccess.Write)

        Dim bw As IO.BinaryWriter
        bw = New IO.BinaryWriter(s1)

        Try
            bw.Write(bytReturn)
        Finally
            bw.Close()
            s1.Close()
        End Try
        MsgBox("Done")
    End Sub
End Class

Tens ai tudo para veres =)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

 Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim address As String = ("http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip")
        Dim url As New Uri(address)
        bytReturn = down.DownloadDataAsync(url)
    End Sub

Alguem é capaz de me explicar porque é que isso dá erro? diz que "Expression does not produce a value." na linha do DownloadDataAsync.

Penso que tem a ver com o facto do DownloadDataAsync não retornar nenhum valor, logo não o podes igualar a uma variável :P

Tens que meter:

Dim WithEvents down as new System.Net.WebClient

e depois tratar do evento DownloadDataCompleted.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

 Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim address As String = ("http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip")
        Dim url As New Uri(address)
        bytReturn = down.DownloadDataAsync(url)
    End Sub

Cumps

Alguem é capaz de me explicar porque é que isso dá erro? diz que "Expression does not produce a value." na linha do DownloadDataAsync.

Penso que tem a ver com o facto do DownloadDataAsync não retornar nenhum valor, logo não o podes igualar a uma variável :P

Tens que meter:

Dim WithEvents down as new System.Net.WebClient

e depois tratar do evento DownloadDataCompleted.

Sim eu ontem também reparei nisso, não tive foi tempo de fazer a ver se consigo alguma coisa hoje. Thanks.

Já agora xD eu depois gravo a data mesmo não estando completada, eu estava a pensar defenir um ponto de partida consoante o "comprimento" da data que já tinha sido feita, mas depois não sei como começar o download a partir deste ponto. Tenho um exemplo em Visual C# se quiserem posso postar.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora