Ir para o conteúdo
Triple

[VB.NET] Como fazer um Download Manager?

Mensagens Recomendadas

Triple    0
Triple

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Soulsick    1
Soulsick

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 ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Soulsick    1
Soulsick

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Soulsick    1
Soulsick

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 ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Soulsick    1
Soulsick

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Soulsick    1
Soulsick

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

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 =)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Revolt    1
Revolt

 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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triple    0
Triple

 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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade