Inquiridor
Bibliotecas para manipular o Internet Explorer

Pergunta
-
Olá a todos da comunidade
Bom, sou iniciante em VB.NET e preciso saber se pelo VB.NET é possível manipular o browser (IE).
Por exemplo, alguma biblioteca que o controle dinamicamente, de acordo com as instruções, e assim executar ações como abrir um site, abrir um link e etc, assim como é possível fazer com os objetos do Office
Alguém poderia me ajudar? Se deixar algum lugar também onde eu possa consultar as classe e métodos, também ficarei grato
Paulo Eduardo Bueno
Todas as Respostas
-
Paulo,
Veja estes artigos...
http://msdn.microsoft.com/pt-br/library/66ahbe6y.aspx
http://www.microsoft.com/brasil/msdn/tecnologias/vs2005/expie_hello_bho.mspx
Espero ter ajudado
-
Opa Jorge,
Vou dar uma olhada nesses artigos, mas acho que eles não correspondem ao que eu quero fazer, talvez não tenha me expressado direito
Vamos lá
Imagine que um funcionário tem uma rotina diária de abrir um site, desse site abrir threads, dessas threads, abrir links para baixar um conteúdo.
eu gostaria de saber se é possível com o VS, criar uma rotina, um robozinho, que faça esse serviço
Por exemplo,
O robo manipula o IE, para entrar no site, abrir as threads e procurar por links com extensão "WMA", por exemplo,
Isso é possível?
Obrigado a todos,
Paulo Eduardo Bueno -
Seguem mais uns links. Conheço a capacidade de manipulação do Internet Explorer via COM, mas procurar links, etc, não tenho conhecimento, fica a intenção.
http://www.microsoft.com/brasil/msdn/Tecnologias/vsnet/visualstudio_com.aspx
http://www.microsoft.com/brasil/msdn/tecnologias/vs2005/expie_hello_bho.mspx
http://msdn.microsoft.com/pt-br/library/66ahbe6y.aspx
http://msdn.microsoft.com/en-us/library/bb250489.aspx
http://msdn.microsoft.com/en-us/library/bb250436.aspx
Abraços
-
Obrigado Jorge, mas acho que encontrei o que estava procurando, só falta saber como utilizar
O VS.2005 possui uma ferramenta chamada WebBrowser, que por ela você cria um browser no seu formulário...a partir daí, é possível manipular eventos e etc...agora eu não sei se com ela é possível criar um programa que navegue automaticamente na net...identificando links, abrindo eles e fazendo downloads, se alguem tiver um exemplo simples e prático ou alguma referencia pra me ajudar, por favor, será bem vinda
de qualquer forma, obrigado Jorge
Paulo Eduardo Bueno -
-
Jorge F. Costa wrote: Paulo,
Se precisar de ajuda na criação de um WebBrowser avise, tenho um feito com um TabControl, parecido com o Internet Explorer 7, que funciona com separadores, com várias páginas.
Abraços
Bom cara, eu gostaria sim, talvez seja de utilidade pra mim, se você puder me passar para eu poder analisar e ver se é o que estou procurando, agradeço
Obrigado Jorge,
Paulo Eduardo Bueno -
-
-
Não lembro se é possível com 2005, mas no 2008 com certeza o controle WebBrowser permite que você manipule o DOM a partir de .Net (e inclusive invocar JavaScript do VB e vice-versa).
Basicamente, após o documento ser carregado no seu programa, você teria acesso ao DOM e poderia usar Document.GetElementById(), etc... quase da mesma forma que em JavaScript (porém programando em VB).
Tendo os passos certinhos e isso não mudando, não é muito difícil fazer um robot para automatizar este processo.
Outra alternativa é um parser, que literalmente lê a página e invoca os links necessários para completar a sua tarefa. -
Bom dia JCKodel,
Obrigado pela dica, mas, dei uma pesquisada e encontrei alguns artigos que podem me ajudar.
existem 2 bibliotecas que podem ser utilizadas para fazer o que eu estou precisando, são elas: "Microsoft HTML Object Library (MSHTML.dll) e Microsoft Internet Controls (SHDocVw.dll"
Essas duas bibliotecas podem manipular o IE e navegar pelo site, de acordo com as intruções que você der. Bom, consegui fazer essa navegação, só que o meu problema agora é na hora que quando o site aponta para um link que irá abrir em outra janela (pop-up) eu gostaria de saber se alguém conhece alguma forma de eu passar a Referenciar essa nova página que abriu, e não continuar na antiga...pois preciso dos dados que estão nessa outra página aberta.
Obrigado pela ajuda
Paulo Eduardo Bueno -
-
Opa JCKodel
Então cara, consegui agora manipula a pop-up, bastava uma outra instância de página do IE receber o link e não usar o evento click da primeira página. Obrigado
Bom, o meu problema agora é que eu preciso saber como eu posso baixar um arquivo automaticamente, pois o mesmo não se encontra em um link, o link dele abre uma página e no código dessa página possui o link do download.
Eu consigo chegar até o link, mas agora preciso de alguma coisa que baixe "esse" link pra mim, um gerenciador de downloads por exemplo, onde eu colaria essa URL e ele começasse a baixar.
O VB.NET possui algum tipo de recurso como esse?
Obrigado,
Paulo Eduardo Bueno -
Hmmm... Nao eh muito dificil...
Abra um socket para o servidor na porta 80.
Envie GET /Caminho/NomeArquivo HTTP/1.0
Envie uma linha em branco
O servidor vai te devolver os headers. Vá lendo linhas ate achar o Content-Length: XXXX, onde XXXX é o tamanho do arquivo que sera enviado.
QUando receber uma linha em branco, isso indica o fim dos headers. Todos os bytes agora sao seus arquivos.
Faca isso no Telnet com um arquivo BEM pequeno para ver como ele retorna as opcoes.
OU
Verifique a classe HttpRequest e HttpResponse, pois da pra voce criar requests direto via codigo e talvez seja mais simples obter seu arquivo assim.
-
Opa Kodel, então cara, consegui algo mais simples (acho que eu to ficando bom nisso rsrsr)
Eu usei o "My.Computer.Network.DownloadFile" e deu certo para o que eu quero fazer
Mas, eis que surge mais um problema (esses nunca acabam). Eu preciso voltar a página anterior para ir para o próximo link, então utilizo o wbbrowser.GoBack (onde wbbrowser é a minha instância de browser), porém, o programa executa esse comando antes do browser carregar a página anterior, como esse procedimento está dentro de um loop, ele executa mais rapido do que o IE carrega a página, fazendo voltar mais vezes do que o necessário
Gostaria de saber se existe algum método ou qualquer outra coisa que faça a aplicação "esperar" a página ser carregada, ou alguma outra função ou método onde eu possa setar um tempo de espera.
Segue o código onde está setado esse GoBack:
For Each iHtmlEle In iHtmlCol
If Not iHtmlEle.getAttribute("href") Is Nothing Then
str = iHtmlEle.getAttribute("href").ToString
If str.Contains("get_topic") Then
If str = enderecoAtual Then
GoTo pula
End If
If str.Contains(enderecoAtual) Then
wbbrowser.GoBack()
GoTo proximo
End If
enderecoAtual = str
iHtmlEle.click()
Exit For
End If
End If
pula:
Next
enderecoAtual é uma variável que eu criei para ele fazer verificação se já vizualizou a página na primeira vez, o que está acontecendo é que quando ele chega nessa verificação ("If str.Contains...") e faz o loop, o browser ainda não carregou a página, então ele faz a verificação com a mesma página e da GoBack mais uma vez, ou seja, da dois GoBacks, fazendo uma verificação repetida com a mesma página
Obrigado,
Paulo Eduardo Bueno -
Em primeiro lugar GOTO NÃOOOOOOOO
Ao invés de usar Goto Pula, use CONTINUE FOR
Ao invés de usar Goto Proximo, use EXIT FOR
Para esperar a página carregar o HTML tem um evento DocumentOnLoad ou NavigateComplete, não lembro, que é disparado quando a página termina de carregar.
-
Opa pessoal, boa tarde
heh, voltei nesse post por que acho que se encaixa bem aqui e não preciso criar outro
Bom, em relação as coisas acima, consegui executar tudo com as dll citadas, porém agora me surgiu uma dúvida
é possível colocar de alguma forma, a aplicação em um estado que espere a ação do usuário
Digo, como estou manipulando o browser, não tenho controle pelo que o usuário está clicando e disparar um evento a partir disso (acho que não é possível). Gostaria de saber, se, por exemplo, eu defino uma tag na aplicação, como se fosse um botão, e quando o usuário clicar os códigos serem executados da forma que eu desejo
É possível ter um controle assim com o VB.NET ?
Desde já,
Obrigado
Paulo Eduardo Bueno -
-
Paulo Eduardo Bueno wrote:
É possível ter um controle assim com o VB.NET ?
Antes de mais nada lembre-se que VB.NET faz TUDO o que o .Net faz e um pouco a mais
Há um evento que captura a URL que você deseja navegar, ou seja, uma espécie de BeforeNavigate.
Para saber o que o usuário está fazendo, você pode fazer ele navegar até um link e tratar isso no evento:
Ex.: Se sua página é http://www.google.com, navegue para http://www.google.com#MeuComando
A página não será recarregada, mas o evento será disparado, e aí você pode usar o #MeuComando para saber o que o usuário está fazendo. -
JCKödel wrote: Paulo Eduardo Bueno wrote:
É possível ter um controle assim com o VB.NET ?
Antes de mais nada lembre-se que VB.NET faz TUDO o que o .Net faz e um pouco a mais
Há um evento que captura a URL que você deseja navegar, ou seja, uma espécie de BeforeNavigate.
Para saber o que o usuário está fazendo, você pode fazer ele navegar até um link e tratar isso no evento:
Ex.: Se sua página é http://www.google.com, navegue para http://www.google.com#MeuComando
A página não será recarregada, mas o evento será disparado, e aí você pode usar o #MeuComando para saber o que o usuário está fazendo.
Opa cara, bom dia
então
você poderia me dar um exemplo bem simples de quando utilizar esse evento?
algo como
wbbrowser_BeforeNavigate...
if wbbrowser.Navigate("www.google.com.br") then
instruções
end if
End Sub
Bom, não sei se seria algo assim que ficaria, se possível postar um exemplo, fico extremamente grato
Desde já
Obrigado! -
Se você fizer um navigate dentro de um beforenavigate, vai conseguir um loop infinito... Pense: BEFORE = Antes NAVIGATE = Navegar. Não faz sentido navegar dentro do evento disparado antes de navegar >.<
Aqui está a documentação oficial: http://msdn.microsoft.com/en-us/library/aa752040.aspx
Aqui um passo a passo: http://www.aspfree.com/c/a/VB.NET/Displaying-HTML-Content-with-a-Web-Browser-Control-in-Visual-Basic/
Aqui um navegador completo em C#: http://www.codeproject.com/KB/cs/webbrowser.aspx -
Realmente hehe,
mas então, o que eu gostaria de fazer seria isso mesmo
Tipo,
Se a url que o usuário digitar na hora for = "o que eu defino", então faz alguma coisa
é isso que eu to procurando
Vo dar uma olhada no artigos, por favor, se tiver conhecimento de algum material relacionado a isso agradeço
Desde já,
Obrigado