Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-07-2011
Gothem Gothem is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 12
Poder: 0
Gothem Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 01-08-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.460
Poder: 20
newtron Va camino a la fama
Hola.

¿Ese sitio de internet es un sitio ftp del que tienes los datos de user, password, etc?
Responder Con Cita
  #3  
Antiguo 01-08-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 01-08-2011
Gothem Gothem is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 12
Poder: 0
Gothem Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 01-08-2011
Gothem Gothem is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 12
Poder: 0
Gothem Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 01-08-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Aquí tienes un ejemplo de cómo descargar imágenes de la web.
TidHTTP descargar imágenes de la web
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 03-08-2011
Gothem Gothem is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 12
Poder: 0
Gothem Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo 03-08-2011
Gothem Gothem is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 12
Poder: 0
Gothem Va por buen camino
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?
Responder Con Cita
  #9  
Antiguo 03-08-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Usa la API URLDownloadToFile


Código Delphi [-]
uses  Urlmon

URLDownloadToFile(nil, PCHAR(URL), PCHAR(FileName), 0, nil);


Saludos.
Responder Con Cita
  #10  
Antiguo 03-08-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Gothem Ver Mensaje
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?
¿Qué antivirus estás utilizando?
Tendrás que decirle al antivirus que tu aplicación es segura.
¿Estás descargando algo peligroso? ¿Un EXE o similar?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #11  
Antiguo 03-08-2011
Gothem Gothem is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 12
Poder: 0
Gothem Va por buen camino
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.
Responder Con Cita
  #12  
Antiguo 04-08-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #13  
Antiguo 04-08-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
¿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.
Responder Con Cita
  #14  
Antiguo 04-08-2011
Gothem Gothem is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 12
Poder: 0
Gothem Va por buen camino
Si, mi aplicación es API pura, igual puede ser por eso. ¿Cómo importo dinamicamente para que no me salte el antivirus?
Responder Con Cita
  #15  
Antiguo 04-08-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
El siguiente método te servirá para importar APIs dináminamente y ejecutarlas:

Código Delphi [-]
type
  PURLDownloadToFile = function(pCaller: Pointer; szURL, szFileName: PCHAR; dwReserved: Cardinal; lpfnCB: Pointer): Cardinal; stdcall;

var
  URLDownloadToFile: PURLDownloadToFile;
  hLib: Integer;

begin
  hLib:= LoadLibrary('urlmon.dll');
  URLDownloadToFile:= GetProcAddress(hLib, 'URLDownloadToFileA');
  URLDownloadToFile(nil, PCHAR('http://telmosilva.files.wordpress.com/2010/03/informatica_12.jpg'), PCHAR('FileName.jpg'), 0, nil);
  FreeLibrary(hLib);
end.

Saludos.
Responder Con Cita
  #16  
Antiguo 04-08-2011
Gothem Gothem is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 12
Poder: 0
Gothem Va por buen camino
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:
Código Delphi [-]
ShellExecute(Application.Handle, PChar('open'), PChar(DestFile), PChar(''), nil, SW_NORMAL);

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.
Responder Con Cita
  #17  
Antiguo 04-08-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Gothem Ver Mensaje
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:
Código Delphi [-]
ShellExecute(Application.Handle, PChar('open'), PChar(DestFile), PChar(''), nil, SW_NORMAL);

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.
Dos cosas:

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.
Responder Con Cita
  #18  
Antiguo 04-08-2011
Gothem Gothem is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 12
Poder: 0
Gothem Va por buen camino
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.
Responder Con Cita
  #19  
Antiguo 04-08-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Código Delphi [-]
type
  PShellExecute = function(hwnd: Cardinal; lpOperation, lpFile, lpParameters, lpDirectory: PCHAR; nShowCmd: integer): Cardinal; stdcall;

var
  ShellExecute: PShellExecute;
  hLib: Integer;

begin
  hLib:= LoadLibrary('Shell32.dll');
  ShellExecute:= GetProcAddress(hLib, 'ShellExecuteA');
  ShellExecute(0, PCHAR('open'), PCHAR('File.jpg'), nil, nil, SW_NORMAL);
  FreeLibrary(hLib);
end.

Saludos.
Responder Con Cita
  #20  
Antiguo 05-08-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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

¿El AV salta con cualquier proyecto?. Obsérvalo.

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Descargar un archivo de Internet c0lo Internet 10 14-05-2016 04:44:25
Como descargar algun archivo en Delphi 5 flystar Varios 7 13-08-2010 05:43:38
descargar archivo remoto totote Internet 4 17-10-2007 10:19:22
Descargar archivo con redirección voci Internet 4 09-04-2007 14:22:27
Problemas al descargar un archivo Mauro® Internet 2 23-10-2003 22:21:28


La franja horaria es GMT +2. Ahora son las 12:39:47.


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
Copyright 1996-2007 Club Delphi