Usuário com melhor resposta
Loop em código WebBrowser Vb2008

Pergunta
-
Caros, estou tentando montar uma rotina onde será necessário conectar em um site, informar alguns parametros e realizar o download do arquivo, isso automaticamente. A parte de fornecer os parametros eu consegui, mas não consigo criar um laço de repetição para fazer o download do arquivo com os dados indicados, tendo em vista que após este download os dados serão atualizados e será feito um novo download e assim sucessivamente até o fim dos arquivos de entrada.
Para um arquivo o código funciona, pois ao fim do procedimento do botão o download é feito, mas eu preciso que este download seja feito antes do procedimento do botão finalizar.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim F_inicial(), F_final(), SiglaUF(), delimitador, arquivo, stLINHA(), conteudoLido, conteudoLista() As String Dim l_freq, l_est As Integer 'Preenche os arquivos de frequencia----------------------------------------------------------------------------- arquivo = "c:\Frequencias.txt" File.OpenText(arquivo) delimitador = "," 'Recebe todos os dados do txt stLINHA = File.ReadAllLines(arquivo) l_freq = stLINHA.Length - 1 ReDim F_inicial(l_freq) ReDim F_final(l_freq) For i = 0 To (l_freq) conteudoLido = "" conteudoLido = stLINHA(i) conteudoLista = Split(conteudoLido, delimitador) F_inicial(i) = conteudoLista(0) F_final(i) = conteudoLista(1) Next FileClose() 'Preenche com os nomes de Estados------------------------------------------------------------------------------- arquivo = "c:\Estados.txt" File.OpenText(arquivo) 'Recebe todos os dados do txt stLINHA = File.ReadAllLines(arquivo) l_est = stLINHA.Length - 1 ReDim SiglaUF(l_est) For i = 0 To (l_est) SiglaUF(i) = stLINHA(i) Next 'Realiza o loop com as frequencias dentro de cada estado--------------------------------------------------------- WebBrowser1.Document.GetElementById("IndFiltro0").InvokeMember("click") WebBrowser1.Document.GetElementById("IndApresentacao8").InvokeMember("click") WebBrowser1.Document.GetElementById("pIdtUnidadeTransmissao").SetAttribute("Value", 2) WebBrowser1.Document.GetElementById("pIdtUnidadeRecepcao").SetAttribute("Value", 2) WebBrowser1.Document.GetElementById("IndGrupoEstacao1").InvokeMember("click") For i = 0 To l_est WebBrowser1.Document.GetElementById("SiglaUF").SetAttribute("Value", SiglaUF(i)) For j = 0 To l_freq WebBrowser1.Document.GetElementById("pMedRecepcaoInicial").SetAttribute("Value", F_inicial(j)) WebBrowser1.Document.GetElementById("pMedTransmissaoInicial").SetAttribute("Value", F_final(j)) WebBrowser1.Document.GetElementById("botaoFlatDownloadTXT").InvokeMember("click") Application.DoEvents() 'WebBrowser1.Document.GetElementById("botaoFlatDownloadTXT").Focus() 'SendKeys.SendWait("{ENTER}") Next Next End Sub
Respostas
-
Thiago,
Não sei se a rotina que você colocou funciona corretamente, porém se eu fosse fazer o que você quer faria da seguinte forma:
1 - Obter uma Lista de Arquivos que você precisa fazer download
2 - Percorrer a Lista chamando um método genérico que receba como parametro
2.1 - Fazer o download do arquivos e obter o binário dele em memória.
2.2 - Antes de inserir no banco ou em um diretório físico checar o tamanho do binário do mesmo, para verificar se esse arquivo já foi baixado, se foi não será armazenado.Por que o procedimento de download só funciona quando o fluxo do botão download termina? Provavelmente porque esse procedimento depende de um PostBack certo?
Então você pode manter uma fila de arquivo na memória, quando você fazer um PostBack para o servidor, você envia todos de uma única vez.Abraços,
Leandro Rodrigues
Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida
- Marcado como Resposta Felipo GonçalvesModerator segunda-feira, 17 de junho de 2013 12:42