none
Bibliotecas para manipular o Internet Explorer RRS feed

  • 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
    segunda-feira, 14 de julho de 2008 17:32

Todas as Respostas

  • segunda-feira, 14 de julho de 2008 22:01
  • 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
    terça-feira, 15 de julho de 2008 12:14
  • terça-feira, 15 de julho de 2008 18:10
  • 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
    terça-feira, 15 de julho de 2008 18:36
  • 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

     

    terça-feira, 15 de julho de 2008 20:25
  •  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
    quarta-feira, 16 de julho de 2008 11:29
  • Paulo,

     

     Teu email e envio um projecto zipado em código aberto para testares.

     

     Abraços

     

    quarta-feira, 16 de julho de 2008 19:18
  • Opa Jorge,


    segue e-mail p/ contato


    duda_hiei@hotmail.com


    Obrigado
    quarta-feira, 16 de julho de 2008 20:26
  • 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.
    sábado, 19 de julho de 2008 04:42
  • 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

    segunda-feira, 21 de julho de 2008 14:40
  • Há um evento nestas bibliotecas (que sao as mesmas utilizadas pelo controle WebBrowser) para quando o usuario abre uma nova janela (permitindo, por exemplo, instanciar um form teu e abrir esta nova url neste form)

    segunda-feira, 21 de julho de 2008 19:06
  • 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
    segunda-feira, 21 de julho de 2008 19:37
  •  

    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.

    segunda-feira, 21 de julho de 2008 20:21
  • 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

    quarta-feira, 23 de julho de 2008 18:45
  • 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.

    quarta-feira, 23 de julho de 2008 18:48
  • 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



    segunda-feira, 4 de agosto de 2008 16:05
  • Bom dia,
    Alguém conhece algo que possa ajudar?
    Me enrosquei bonito nisso.




    Obrigado,
    Paulo Eduardo Bueno
    quinta-feira, 7 de agosto de 2008 11:17
  •  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 Wink

    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.
    quinta-feira, 7 de agosto de 2008 14:43
  •  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 Wink

    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!
    sexta-feira, 8 de agosto de 2008 12:46
  • 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



    sexta-feira, 8 de agosto de 2008 13:37
  • 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
    sexta-feira, 8 de agosto de 2008 16:25