elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  webbrowser como interceptar descarga de archivos y dirigirlos donde yo quiera
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: webbrowser como interceptar descarga de archivos y dirigirlos donde yo quiera  (Leído 7,837 veces)
jagrane

Desconectado Desconectado

Mensajes: 9


Ver Perfil
webbrowser como interceptar descarga de archivos y dirigirlos donde yo quiera
« en: 22 Junio 2011, 15:34 pm »

Hola
Estoy desarrollando una aplicación en Visual Basic 2005 que abre una página web concreta y segura, selecciona apuntes y hace un click por código en el botón "comprimir y descargar".

Hasta ahí, todo bien, pero al hacer click, sale la clásica ventana pidiendo qué hacer con el archivo, si abrir, guardar o cancelar, para, seguidamente, pedir el nombre y carpeta donde guardar.

La pregunta que hago es:
Cómo puedo capturar la descarga del archivo antes de que aparezcan ventanas y guardarlo donde yo quiera y con el nombre que yo quiera, sin intervención del operador?
Muchas gracias


En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: webbrowser como interceptar descarga de archivos y dirigirlos donde yo quiera
« Respuesta #1 en: 23 Junio 2011, 01:49 am »

Hola, te paso un ejemplo de lo que queres, haber si te sirve, lo que hace es al detectar una URL terminada en la extensión del archivo a descargar (por ejemplo .zip, .rar o .exe) lo que hace es cancelar esa ventana del internet explorer y mostrarte una ventana propia propia (crea un SaveFileDialog) donde vos le pones el nombre que quieras y lo guardas, la descarga se hace en segundo plano mediante WebClient().

Código
  1. Imports System.Net
  2.  
  3. Public Class Form1
  4.  
  5.    Private Sub WebBrowser1_Navigating(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
  6.        If e.Url.Segments(e.Url.Segments.Length - 1).EndsWith(".exe") Then
  7.  
  8.            e.Cancel = True
  9.  
  10.            Dim vPath As String = ""
  11.  
  12.            Dim vFileSave As New SaveFileDialog
  13.  
  14.            vFileSave.FileName = e.Url.Segments(e.Url.Segments.Length - 1)
  15.  
  16.            If vFileSave.ShowDialog() = DialogResult.OK Then
  17.  
  18.                vPath = vFileSave.FileName
  19.  
  20.                Dim vCliente As New WebClient()
  21.  
  22.                AddHandler vCliente.DownloadProgressChanged, AddressOf ProgresoDescarga
  23.                AddHandler vCliente.DownloadFileCompleted, AddressOf DescargaCompleta
  24.  
  25.                vCliente.DownloadFileAsync(e.Url, vPath)
  26.            End If
  27.        End If
  28.    End Sub
  29.  
  30.    Private Sub DescargaCompleta(ByVal sender As Object, ByVal e As EventArgs)
  31.        MessageBox.Show("Descarga Completa")
  32.    End Sub
  33.  
  34.    Private Sub ProgresoDescarga(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
  35.  
  36.        Dim bytesIn As Double = Double.Parse(e.BytesReceived.ToString())
  37.        Dim totalBytes As Double = Double.Parse(e.TotalBytesToReceive.ToString())
  38.        Dim percentage As Double = bytesIn / totalBytes * 100
  39.  
  40.        Me.Text = "Progreso Completado: " & Integer.Parse(Math.Truncate(percentage).ToString()) & " %"
  41.    End Sub
  42.  
  43.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  44.        WebBrowser1.Navigate("http://releases.mozilla.org/pub/mozilla.org/firefox/releases/5.0/win32/es-AR/Firefox%20Setup%205.0.exe")
  45.    End Sub
  46. End Class
  47.  

este ejemplo descarga del FTP de mozilla firefox, el .exe de la version 5.0

tiene 2 manejadores de eventos, uno para la descarga completada y el otro para el progreso (que te lo muestra en la barra de titulo).

hasta si queres podes sacarle que no cree la ventana, y que lo ponga en el path que vos le digas, ahi si no tendria que apretar nada el usuario.

saludos.


En línea

jagrane

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: webbrowser como interceptar descarga de archivos y dirigirlos donde yo quiera
« Respuesta #2 en: 23 Junio 2011, 13:53 pm »

Gracias seba123neo
He probado tu rutina, pero no me funciona, porque debe trabajara de otra manera:
Al hacer click, solamente envía la url de la página, y entiendo que las identificaciones de los registros a comprimir irán por post. Acto seguido aparece la pantalla de petición.

He puesto un punto de control en el primer if y consultado la url, y en ningún caso pasa el zip por ahí, por lo que no me funciona en este caso.

¿Sabes si hay alguna forma de saber las variables que se envían por post?
¿O cómo cambiar la url para que la envíe a otro sitio?  Tengo instalado u servidor apache y podría dirigirlo a localhost/quevariables.php y hacer un volcado del post.

Y en este caso:
¿Cómo incluir las variables post al enviar la url con webclient?

O inyectar rutinas en java y que se puedan ejecutar.

Te incluyo un ejemplo muy reducido del código de la página:
Código:
<TABLE id=row>
  <THEAD>
  <TR>
    <TH></TH>
    <TH>Estado</TH>
    <TH>Remitente</TH>
    <TH>Destinatario</TH>
    <TH>Asunto</TH>
    <TH>Nº Ord</TH>
    <TH>Fecha envío</TH>
  </TR>
  </THEAD>
  <TBODY>
  <TR>
    <TD><INPUT id=idMensajeSeleccionado1 title="Seleccionar mensaje"
      onkeypress=actualizarSeleccionados(this);
      onclick=actualizarSeleccionados(this);
      value="000001"
      type=checkbox name=idMensajeSeleccionado><INPUT value=on type=hidden
      name=_idMensajeSeleccionado> </TD>
    <TD><IMG alt="Mensaje no leído" src="ico_noleido.gif"></TD>
    <TD>JUAN MARTINEZ PEREZ</TD>
    <TD>PEDRO SANCHEZ ETCETERA</TD>
    <TD>Orden de pedido</TD>
    <TD>20100000853</TD>
    <TD>02/06/2011 17:48:29</TD>
  </TR>
  <TR>
    <TD><INPUT id=idMensajeSeleccionado1 title="Seleccionar mensaje"
      onkeypress=actualizarSeleccionados(this);
      onclick=actualizarSeleccionados(this);
      value="000001"
      type=checkbox name=idMensajeSeleccionado><INPUT value=on type=hidden
      name=_idMensajeSeleccionado> </TD>
    <TD><IMG alt="Mensaje no leído" src="ico_noleido.gif"></TD>
    <TD>JUAN MARTINEZ PEREZ</TD>
    <TD>PEDRO SANCHEZ ETCETERA</TD>
    <TD>Orden de pedido</TD>
    <TD>20100000853</TD>
    <TD>02/06/2011 17:48:29</TD>
  </TR>
  <TR>
    <TD><INPUT id=idMensajeSeleccionado1 title="Seleccionar mensaje"
      onkeypress=actualizarSeleccionados(this);
      onclick=actualizarSeleccionados(this);
      value="000002"
      type=checkbox name=idMensajeSeleccionado><INPUT value=on type=hidden
      name=_idMensajeSeleccionado> </TD>
    <TD><IMG alt="Mensaje no leído" src="ico_noleido.gif"></TD>
    <TD>JUAN MARTINEZ PEREZ</TD>
    <TD>PEDRO SANCHEZ ETCETERA</TD>
    <TD>Orden de pedido</TD>
    <TD>20100000853</TD>
    <TD>02/06/2011 17:48:29</TD>
  </TR>
  <TR>
    <TD><INPUT id=idMensajeSeleccionado1 title="Seleccionar mensaje"
      onkeypress=actualizarSeleccionados(this);
      onclick=actualizarSeleccionados(this);
      value="000003"
      type=checkbox name=idMensajeSeleccionado><INPUT value=on type=hidden
      name=_idMensajeSeleccionado> </TD>
    <TD><IMG alt="Mensaje no leído" src="ico_noleido.gif"></TD>
    <TD>JUAN MARTINEZ PEREZ</TD>
    <TD>PEDRO SANCHEZ ETCETERA</TD>
    <TD>Orden de pedido</TD>
    <TD>20100000853</TD>
    <TD>02/06/2011 17:48:29</TD>
  </TR>
  </TBODY>
</TABLE>
<P>Mensajes seleccionados :<SPAN id=seleccionados>
<SCRIPT>imprimeValor(selec);</SCRIPT>
</SPAN></P>
 <INPUT class=botones title="Comprimir y descargar los mensajes seleccionados" value=Descargar type=submit name=descargar>

Este ultimo boton es el que yo estoy intentando gestionar.

No obstante, en mis búsquedas por la red, creo que hay más gente que busca una subrutina como la tuya.
Un saludo
Jagrane
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
cmdCopiar + txtBox a donde quiera
Programación Visual Basic
jocker 2 1,603 Último mensaje 1 Marzo 2006, 00:15 am
por jocker
como crear una nueva estancia,donde uno quiera
Juegos y Consolas
kmbawuazo 0 1,725 Último mensaje 16 Noviembre 2008, 05:38 am
por kmbawuazo
Al visitar una pagina con el Webbrowser se descarga
Programación Visual Basic
SheKeL_C$ 0 1,856 Último mensaje 15 Abril 2010, 01:08 am
por SheKeL_C$
Descarga desde WebBrowser « 1 2 »
.NET (C#, VB.NET, ASP)
Dragonatak 11 13,601 Último mensaje 4 Noviembre 2011, 05:02 am
por Dragonatak
[APORTE] Interceptar Archivos/Directorios USB « 1 2 »
.NET (C#, VB.NET, ASP)
kub0x 16 9,749 Último mensaje 17 Abril 2012, 23:22 pm
por kub0x
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines