Newsgroup: it.comp.lang.visual-basic
Titolo: Chi conosce l'API "DoFileDownload"

Scusate se posto un altro msg.............
La sua dichiarazione è:
Private Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As
String) As Long
Vuole come parametro l'indirizzo da scaricare il file es:
http://www.mvps.org/vbnetf/vb6/vbrun60.zip
Oppure per server Ftp che abbiano bisogno di Password:
ftp://User:pass...@ftp.microsoft.com/disclaimer.txt
Però se uno vuole fare il download in automatico senza usare altre
api che aimè non fanno vedere la barra di scorrimento come fa?
C'è un trucchetto per utilizzare questa Api per non far uscire la
finestra "salva con nome"?Ad esempio dopo il percorso mettere
una parola chiave del tipo " in c:\windows........." oppure "into ........"
Oppure esiste un altra api che mi fa vedere la barra di scorrimento e che
accetta 2
parametri "posizione ftp "  e "posizione locale"
Grazie a tutti.
Ciao
Oz
--
Carè Walter SIA SOFTWORK S.R.L.
Via Zanardelli, 13/A - 25062 Concesio (BS) Italy
Tel. 0039-30-2008135/0039-30-2091057  Fax. 0039-30-2004911
Web: 
http://www.siasoftwork.it
 - E.mai:- 
ca...@siasoftwork.it

 finestra "salva con nome"
Ci dovrebbe essere la sorella maggiore, DoFileDownloadEx.
Ma ho paura che non sia documentata.
Comunque shdocvw č una interfaccia ad alto livello, suppongo
non si possa fare a meno della finestra associata, dato che IE delega
in toto all'activex l'operazione di download.
Puoi seguire la strada piů lunga, ma piů proficua.
InternetReadFile(ByVal hFile As Long, _
                          ByVal lpBuffer As String, _
                          ByVal dwNumberOfBytesToRead As Long,
                          lpdwNumberOfBytesRead As Long) As Long
hFile č l'handle ottenuto tramite FtpOpenFile o FtpFindFirstFile;
lpBuffer la stringa che contiene i byte letti;
dwNumberOfBytesToRead č il numero di byte da leggere;
lpdwNumberOfBytesRead č il numero di byte che la funzione
ha effettivamente letto.
Restituisce True se la richiesta di trasferimento ha avuto successo.
Se la risposta č True e lpdwNumberOfBytesRead č 0, il
trasferimento č completato.
Dato che stabilisci tu quanti byte leggere, puoi crearti una barra
di progresso e un'interfaccia custom.

 ha scritto nel messaggio
news:8qghfq$fc91h$1...@ID-51240.news.cis.dfn.de...
CUT
Una volta che ho il mio file trovato con FtpFindFirstFile, dove specifico
la destinazione locale?
Se io richiamo InternetReadfile e finisce il ciclo, poi devo spostare
manualmente
il file? (name  filevecchio as filenuovo)  oppure posso specificarlo da
qualche parte?
Ciao
Grazie
Oz

 qualche parte?
Torniamo un attimo al prototipo della funzione:
InternetReadFile(ByVal hFile As Long, _
                          ByVal lpBuffer As String, _
                          ByVal dwNumberOfBytesToRead As Long,
                          lpdwNumberOfBytesRead As Long) As Long
se hFile è un dato che possiedi, hai praticamente finito.
lpBuffer è, come dice il nome, un buffer. I buffer vanno sempre dimensionati.
A maggior ragione se poi se ne deve specificare la dimensione.
dwNumberOfBytesToRead è appunto la dimensione del buffer (anche
se può essere inteso come uguale o minore della dimensione
del buffer).
la chiamata sarà di conseguenza:
Dim lpBuffer As String
Dim lngBytesToRead As Long
Dim lngBytesReceived As Long
Dim lngRet As Long
    lngBytesToRead = 512
    lpBuffer = Space(lngBytesToRead)
    lngRet = InternetReadFile(hFile, _
                  lpBuffer, _
                  lngBytesToRead, _
                  lngBytesReceived)
Le la lettura è andata a buon fine, ossia se lngRet = True,
il buffer lpBuffer conterrà i byte specificati da lngBytesReceived.
Quindi :
    lpBuffer = Left$(lpBuffer, lngBytesReceived)
A questo punto, non fai altro che aprire un file in modalità binaria
e scriverci i byte ricevuti, come stessi scrivendo l'output di una
porta seriale. Continui fino a che lngBytesReceived ritorna con
valore 0, sempre che lngRet sia True.