elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 05:29  


Tema destacado: Suscripción al boletín mensual de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderador: [D4N93R])
| | | |-+  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 1,627 veces)
jagrane

Desconectado Desconectado

Mensajes: 7


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

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.214



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

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
Imports System.Net
 
Public Class Form1
 
   Private Sub WebBrowser1_Navigating(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
       If e.Url.Segments(e.Url.Segments.Length - 1).EndsWith(".exe") Then
 
           e.Cancel = True
 
           Dim vPath As String = ""
 
           Dim vFileSave As New SaveFileDialog
 
           vFileSave.FileName = e.Url.Segments(e.Url.Segments.Length - 1)
 
           If vFileSave.ShowDialog() = DialogResult.OK Then
 
               vPath = vFileSave.FileName
 
               Dim vCliente As New WebClient()
 
               AddHandler vCliente.DownloadProgressChanged, AddressOf ProgresoDescarga
               AddHandler vCliente.DownloadFileCompleted, AddressOf DescargaCompleta
 
               vCliente.DownloadFileAsync(e.Url, vPath)
           End If
       End If
   End Sub
 
   Private Sub DescargaCompleta(ByVal sender As Object, ByVal e As EventArgs)
       MessageBox.Show("Descarga Completa")
   End Sub
 
   Private Sub ProgresoDescarga(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
 
       Dim bytesIn As Double = Double.Parse(e.BytesReceived.ToString())
       Dim totalBytes As Double = Double.Parse(e.TotalBytesToReceive.ToString())
       Dim percentage As Double = bytesIn / totalBytes * 100
 
       Me.Text = "Progreso Completado: " & Integer.Parse(Math.Truncate(percentage).ToString()) & " %"
   End Sub
 
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       WebBrowser1.Navigate("http://releases.mozilla.org/pub/mozilla.org/firefox/releases/5.0/win32/es-AR/Firefox%20Setup%205.0.exe")
   End Sub
End Class
 

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

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
jagrane

Desconectado Desconectado

Mensajes: 7


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

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 428 Último mensaje 1 Marzo 2006, 00:15
por jocker
como crear una nueva estancia,donde uno quiera
Juegos y Consolas
kmbawuazo 0 360 Último mensaje 16 Noviembre 2008, 05:38
por kmbawuazo
Al visitar una pagina con el Webbrowser se descarga
Programación Visual Basic
SheKeL_C$ 0 637 Último mensaje 15 Abril 2010, 01:08
por SheKeL_C$
Descarga desde WebBrowser
.NET
Dragonatak 11 957 Último mensaje 4 Noviembre 2011, 05:02
por Dragonatak
[APORTE] Interceptar Archivos/Directorios USB « 1 2 »
.NET
kub0x 16 876 Último mensaje 17 Abril 2012, 23:22
por kub0x
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines