Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - jrhomer

#21
he encontrado esto por casualidad, lo dejo aquí como NOTA :D y para que alguien lo pruebe.

un saludo.


Esta clase sirve para descargar cualquier archivo de un servidor web, tanto una p�gina como cualquier otro tipo de archivo (.zip, etc). La clase provee de un evento cada vez que descarga un bloque de byes que permite saber el tama�o del documento a descargar, el tama�o que ya hemos descargado, el porcentaje que ya hemos descargado (lo que permite mostrar un barra de progreso de la descarga), el tiempo transcurrido y restante, la velocidad en KB/seg y cancelar la misma en cualquier momento.

El funcionamiento es sencillo, como se ve en el programa de ejemplo.

PROPIEDADES

BytesBloqueDescarga : Devuelve o establece el tama�o de cada bloque que se descarga de internet. No conviene que sea demasiado grande porque se tardar� m�s en poder cancelar una descarga y en mostrar el porcentaje descargado. Su valor por defecto es 512.

ContenidoDescargado : Devuelve el contenido descargado de internet si se dej� en blanco la propiedad Fichero.

Fichero : Devuelve o establece el nombre del fichero donde se guardar� el contenido descargado. Si se deja en blanco el contenido descargado se devolver� en la propiedad ContenidoDescargado.

HuboError : Devuelve si la operaci�n caus� un error. Consultar StatusCode y StatusText para m�s informaci�n.

NoUsarProxy : Establece la lista de direcciones para las que no se usar� el proxy a usar. Si se deja vac�a se usar� la configuraci�n predeterminada del sistema.

Password : Devuelve o establece la password con la que se realizar� la conexi�n.

Puerto : Puerto que se utilizar� para la conexi�n. Si no se rellena se utilizar� el puerto por defecto seg�n el protocolo.

QContentLength : Devuelve o establece si deseamos recuperar la cabecera CONTENT_LENGTH

QContentLengthStr : Devuelve la informaci�n de la cabecera CONTENT_LENGTH, si la propiedad QContentLength as true.

QContentType : Devuelve o establece si deseamos recuperar la cabecera CONTENT_TYPE

QContentTypeStr : Devuelve la informaci�n de la cabecera CONTENT_TYPE si la propiedad QContentType es true.

QExpires : Devuelve o establece si queremos obtener el valor de la cabeceraEXPIRES.

QExpiresStr : Devuelve el valor de la cabecera EXPIRES si el valor de QExpires es true.

QForwarded : Devuelve o establece si deseamos recuperar la cabecera FORWARDED.

QForwardedStr : Devuelve el contenido de la cabecera FORWARDED si la propiedad QForwarded es true.

QLastModified : Devuelve o establece si deseamos recuperar la cabecera LAST_MODIFIED

QLastModifiedStr : Devuelve el valor de la cabecera LAST_MODIFIED si la propiedad QLastModified es true.

QPragma : Devuelve o establece si deseamos recuperar la cabecera PRAGMA.

QPragmaStr : Devuelve el valor de la cabecera PRAGMA si la propiedad QPragma es true.

QRawHeaders : Devuelve o establece si deseamos recuperar la cabecera RAW_HEADERS.

QRawHeadersCrLf : Devuelve o establece si deseamos recuperar la cabecera RAW_HEADERS_CRLF.

QRawHeadersCrLfStr : Devuelve el valor de la cabecera RAW_HEADERS_CRLF si la propiedad QRawHeadersCrLf es true.

QRawHeadersStr : Devuelve el valor de la cabecera RAW_HEADERS si la propiedad QRawHeaders es true.

QRequestMethod : Devuelve o establece si deseamos recuperar la cabecera REQUEST_METHOD.

QRequestMethodStr : Devuelve el valor de la cabecera REQUEST_METHOD si la propiedad QRequestMethod es true.

QServer : Devuelve o establece si deseamos recuperar la cabecera SERVER.

QServerStr : Devuelve el valor de la cabecera SERVER si la propiedad QServer es true.

QVersion : Devuelve o establece si deseamos recuperar la cabecera VERSION.

QVersionStr : Devuelve el valor de la cabecera VERSION si la propiedad QVersion es true.

StatusCode : Devuelve el c�digo de error.

<>StatusText : Devuelve la descripci�n del error.

URL : Devuelve y establece la URL que queremos descargar.

UsarProxy : Establece la lista de proxys a usar. Si se deja vac�a se usar� la configuraci�n predeterminada del sistema.

Usuario : Devuelve o establece el usuario con el que se realizar� la conexi�n.

METODOS

Descargar : Descarga la informaci�n y/o el contenido solicitado. Para determinar qu� informaci�n descargar revise las propiedades que comienzan con Q.

EVENTOS

Progreso : Este evento informa de los bytes totales del documento que estamos descargando (-1 si el tama�o es desconocido), los bytes que llevamos descargados, el porcentaje que esto representa, los segundos transcurridos, los segundos restantes (a la velocidad de descarga actual) y la velocidad de descarga en bytes por segundo.
Si ponemos el par�metro Cancelar a true se cancela la descarga.


Download jrdownload.zip 

He encontrado otra manera m�s sencilla de bajar un fichero de internet.

Declaramos :

Private Declare Function URLDownloadToFile 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

Y, simplemente :

Dim j As Long
j = URLDownloadToFile(0, "http://www.microsoft.com/ms.htm", _
"c:\temp\ms.htm", 0, 0)

If j = 0 Then
   'el fichero se descarg� correctamente
Else
   'ha ocurrido un error
End If

Si queremos que se muestre el di�logo del IExplorer y que luego nos pregunte el nombre del archivo de destino :

Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As String) As Long

Dim Url as string

'Convertimos la URL a Unicode
Url = StrConv("http://www.microsoft.com/ms.htm', vbUnicode)

DoFileDownload Url

En este caso no s� c�mo saber si la descarga es correcta porque en las pruebas que hice la funci�n siempre devuelve 0.

Si necesitamos especificar un usuario y una password (por ejemplo para un servidor ftp) los incluiremos en la URL de la siguiente manera : para bajer el fichero "mifichero.zip" del servidor "ftp.telecable.es" con el usuario "usuario" y la password "password" debes poner en la URL : "ftp://usuario:password@ftp.telecable.es/mifichero.zip"

Podemos descargar un fichero desde internet (por http, ftp o gopher) f�cilmente usando el API.
Para ello declaramos :

Const scUserAgent = "PonTuNombreAqui"
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long

Y empleamos una funci�n como esta :

Function BajarFichero(sURL As String, sFichero As String, Optional sProxy As String = vbNullString, Optional sNoProxy As String = vbNullString) As Boolean
'sURL = direcci�n del fichero a bajar
'
'sFichero = nombre del fichero en el pc
'
'sProxy = direcci�n del proxy si es necesario. si no se pone lee la informaci�n del registro
'no poner una cadena vac�a
'
'sNoProxy = lista de nombres y/o ip's para las que no se usar� proxy. si ponemos s�lo "" no se usar�
'el proxy para direcciones que no contengan un punto. no poner una cadena vac�a
'
Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long, Res As Integer
Dim Fich As Integer, aux As String

'Crear buffer para recibir el fichero
sBuffer = Space(1000)
BajarFichero = False
'Crear una conexi�n a internet
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, sProxy, sNoProxy, 0)
If hOpen = 0 Then Exit Function
'Abrir la url
hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
If hFile = 0 Then Exit Function
'abrimos el fichero en local
Fich = FreeFile()
If Dir(sFichero) <> "" Then Kill sFichero
Open sFichero For Binary As Fich
Res = 1: Ret = 1000
While Res = 1 And Ret = 1000
    Res = InternetReadFile(hFile, sBuffer, 1000, Ret)
    If Ret > 0 Then
        aux = Left(sBuffer, Ret)
        Put Fich, , aux
    End If
Wend
'cierro el fichero
Close Fich
'cierro la conexi�n
InternetCloseHandle hFile
InternetCloseHandle hOpen
BajarFichero = True
End Function


Para descargar un fichero simplemente debemos hacer :

bResultado= BajarFichero("URL del fichero","c:\NombreFichero")

La funci�n tambi�n admite como par�metros el nombre o direcci�n de un proxy y la lista de m�quinas a las que no iremos por proxy. Estos par�metros no deben indicarse si no se utilizan.

Si necesitamos especificar un usuario y una password (por ejemplo para un servidor ftp) los incluiremos en la URL de la siguiente manera : para bajer el fichero "mifichero.zip" del servidor "ftp.telecable.es" con el usuario "usuario" y la password "password" debes poner en la URL : "ftp://usuario:password@ftp.telecable.es/mifichero.zip"
#22
Programación Visual Basic / Re: Ayuda!!!
18 Diciembre 2006, 19:54 PM
el pass que se meta la primera vez en un txt, y la pass que esté cifrada con algún algoritmo.
#23
despues de postearlo pensé en que esa sería la solución.

En el momento que lo pruebe con la impresora en cuestión veré que pasa.
#24
:P me he dado cuenta que en un Pc puedo imprimir apaisado con Printer.Orientation = vbPRORLandscape... pero la misma aplicación en otro pc no me imprime así me da error.

Sabeis como lo puedo solucionar?
#25
muchas gracias por el aporte
#26
y para que sirve esta versión? No lo entiendo muy bien...
#27
Eon, gracias por tu aporte, ese código ya lo había visto por el foro.
Cita de: Robokop
La ap1 pone datos al final de la ap2 entonces ejecutas la ap2 ytienes que programar la ap2 para que lea desde el final hasta el numero de bytes que pusiste retrocendiendo por ejemplo pones Hola y retrocedes del final de archivo 4 bytes y guardas el texto que seria hola y despues de leer muestras un msgbox con la variable que guardo Hola , busca un poco en el foro esta muy hablado.
Miraré a ver que es lo que encuentro sobre este tema.

Más tarde postearé nuevas noticias :P
#28
Gracias Hendrix, he leido varios post tuyos sobre temas parecidos a este.

Cita de: Hendrixlo que si peudes ahcer es extraer tu Ap2 de dentro del Ap1 y leugo agregar bytes al final de la Ap2 (los bites al final no afectan al programa). y leugo ek los lea el mismo y actue segun medida.
Pero no entiendo bien lo de añadir ls bites al final, bueno... entiendo lo que me me has dicho y la idea, pero no se como realizarlo y de que modo la Ap2 puede leer esos bites e interpretarlos de tal modo como "se le pasara una cadena de texto".
#29
Hola foro...

He estado leyendo algunos hilos en los que se habla de este tema mas o menos, pero no consigo realizar lo que pretendo.

Mi idea es la siguiente:

Tengo una pequeña aplicación que mediante unos parámetros que lee de un fichero realiza unas operaciones. hasta aquí no hay problema.

La idea es que esta aplicación (AP1) cada vez que se ejecute cree otro ejecutable (Ap2) con los parámetros que se le han pasado a AP1.

El primer ejecutable sería para el administrador del sitio (lo que sea)  y de ese ejecutable genera ejecutables para los distintos usuarios.

El ejecutable final es muy simple, hace una par de llamadas a una función y chin pum.

No se si me he explicado bien, es algo lioso la verdad :P
#30
Programación Visual Basic / Re: descargar ftp
12 Diciembre 2006, 16:32 PM
El código fuinciona perfectamente, lo tengo funcionando en aplicaciones y no hay problema.

Para descargar un archivo llama a:
GetFichero

Para subir una archivo al servidor FTP llama a:
PutFichero()

Las funciones son personales.... no son para que las copies y ya tenga que funcionar, mirar a ver que modificaciones teneis que .hacer, pero ese código funciona perfectamente.

Citaraunque no entiendo en la parte que dices:.

StrRutalocalFichero =  "BD.zip"
BD.zip es el archivo que subo y bajo del servidor FTP y se encuentra en la ruta que indico .... imagina que pone C:\archivo.zip. En MI caso el archivo BD.zip se encuentra en el mismo directorio donde ejecuto la aplicación, es por eso que no hay más ruta.