Descargar archivo con Delphi
Hola, buenas.
Estoy creando un programa con delphi y me ha surgido un problema. Necesito que, al iniciarse el programa, este descargue un archivo de internet a un directorio en mi ordenador. ¿Cómo podría conseguirlo? Muchas gracias. |
Hola.
¿Ese sitio de internet es un sitio ftp del que tienes los datos de user, password, etc? |
Has una búsqueda en los foros por la palabra URLMon. Esa búsqueda te llevará a unos cuentos hilos sobre el tema.
Es la unit que incluye funciones (entre otras) para realizar una descarga de archivos. |
No newtron, no es ningún ftp, digamos por ejemplo que sería algo así como descargar una simple imagen buscada en google images.
Voy a probar lo de URLMon. |
He encontrado algo aquí-> ww.clubdelphi.com/foros/showthread.php?t=67586&highlight=URLMon
El problema es que soy principiante y no se muy bien como usar eso. ¿Alguna sugerencia? Gracias. |
Aquí tienes un ejemplo de cómo descargar imágenes de la web.
TidHTTP descargar imágenes de la web |
Neftali, gracias pero creo que eso es un poco complicado para mí, además de que se aleja de lo que yo realmente quería, que era descargar un único archivo.
En mi mensaje anterior dejaba un link de algo que me podría servir y pedía consejo sobre cómo utilizarlo. A ver si alguien me echa un cable acerca de eso. Gracias. |
Vale, olvidad eso, ya lo he conseguido.
Pero ahora tengo otro problema. El antivirus (tras meter ese código y ejecutar la aplicación) la detecta como potencialmente peligrosa... ¿solución a eso? |
Usa la API URLDownloadToFile
Saludos. |
Cita:
Tendrás que decirle al antivirus que tu aplicación es segura. ¿Estás descargando algo peligroso? ¿Un EXE o similar? |
Uso Nod32, y si, puedo decirle a él que es segura, pero me interesa que tampoco sea detectado en el resto de ordenadores del mundo :S.
El archivo que descargo es un .jpg, totalmente inofensivo. PD: El código que he usado es el que sale en el link que he puesto yo. |
No se, prueba en otros ordenadores, pero no debería dar aviso, a no ser que tengas el nivel de protección muy alto.
Si tienes posibilidad prueba el programa en otros equipos/máquinas virtuales. |
¿El resto de la aplicación es "normal"?, es decir, ¿Es una aplicación típica con formularios o API pura?.
Yo he tenido algún problema con el AV al compilar aplicaciones API pura, me refiero a escribir el bucle de mensajes, funciones de respuesta a los WM_ y demás... En este tipo de aplicaciones, algunas API hacen saltar las alarmas. Para solucionar este escollo importo de forma dinámica las APIs conflictivas, en este caso URLDownloadToFile. Este efecto no lo he observado en aplicaciones de consola normales ni en las aplicaciones típicas. Saludos. |
Si, mi aplicación es API pura, igual puede ser por eso. ¿Cómo importo dinamicamente para que no me salte el antivirus?
|
El siguiente método te servirá para importar APIs dináminamente y ejecutarlas:
Saludos. |
Vale, atentos, el problema no está en descargar el archivo, sino en ejecutarlo. El archivo se descarga normalmente (este paso no es detectado por el antivirus), pero a la hora de ejecutarlo mediante esto:
Ese es concretamente el paso detectado, de modo que debo encontrar una manera de que no lo detecte como maligno, porque dudo mucho que ejecutar un .jpg tenga mucha maldad hahah. |
Cita:
1.- No estés seguro que un jpg no venga con "truco". ¿Oíste hablar del desbordamiento del buffer?. Analiza ese archivo. 2.- La API ShellExecute puede hacer saltar la alarma, impórtala de forma dinámica y a ver que pasa. Saludos. |
1- El jpg es una imagen libre de virus subida por mi mismo.
2- Probaría eso pero... ¿qué debo poner exactamente? Gracias por tu respuesta. Estoy aprendiendo más en una semana que en toda mi corta vida. |
Saludos. |
Un detalle que me llama la atención, usas Application.Handle Si tu Aplicación es API pura no usa la VCL y por lo tanto no la variable global Application :eek:
¿El AV salta con cualquier proyecto?. Obsérvalo. Saludos. |
Vale, he encontrado una alternativa no detectada.
Muchas gracias a todos, sois una gran comunidad. He aquí la alternativa para ejecutar un archivo:
|
La franja horaria es GMT +2. Ahora son las 14:42:22. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi