VB.NET - Criando o seu Navegador com o WebBrowser
Que tal criar um navegador básico usando o VB.NET ? Uma forma de fazer bem simples de alcançar este objetivo é usar o controle WebBrowser. Vamos ver como se faz...
Inicie um novo projeto no Visual Studio .NET do tipo Windows Application usando a linguagem VB.NET.
O primeiro passo é habilitar o componente WebBrowser para ser usado no projeto que vamos criar. Para isto siga o roteiro:
No menu Tools selecione a opção : Add/Romove ToolBox Items...
Na janela Customize TooBox , selecione a aba COM e aguarde que os componentes COM sejam exibidos.
Se você não localizar o item - Navegador da Web da Microsoft - vai precisar procurar pela DLL - ShDocVw.dll que geralmente se encontra na pasta System32 do diretório de instalação do Windows. Para Fazer isto clique no botão Browse e após selecionar o arquivo clique em OK.
Após selecionar a janela Customize ToolBox exibira o componente selecionado conforme abaixo.
Pronto. Agora o componente estará disponível na ToolBox na guia General
Vamos continuar com o projeto. No formulário principal , que vou chamar de frmBrowser.vb , vamos incluir os seguintes componentes:
PictureBox
TextBox
TabControl
WebBrowser
Veja o layout do formulário com os controles abaixo:
Criamos 3 abas no controle TabControl:
Navegador : Irá exibir as páginas Web informados pelo usuário na caixa de texto e obtidas pela navegação usando as imagens das setas para frente e para trás .
Código Fonte : Exibe o código fonte da página visitada. (Esta limitado a 32767 caracteres)
Urls visitadas : Informa as URLs visitadas na Navegação
Veja como usar o componente TabControl no artigo : VB.NET - Exibindo registros selecionados com TabControl
Os imports usados na aplicação são :
Imports
System.NetImports
System.IOImports
System.Text
No inicio o formulário vamos criar uma variável de evento para o WebBrowser:
' Cria uma variavel manipuladora de evento a nivel de classe Private WithEvents PaginaWeb As SHDocVw.DWebBrowserEvents_Event
No evento Load do formulário vamos incluir o seguinte código:
' Inicia o
conrole WebBrowser(SHDocVw.dll) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load PaginaWeb = DirectCast(WebBrowser.Application, SHDocVw.WebBrowser_V1) End Sub |
Para controlar o redimensionamento dos controles no formulário vamos usar o código a seguir:
' Arranja o tamanho dos controles no formulário em resposta ao redimensionamento do formulário Private Sub Form1_Layout(ByVal sender As Object, ByVal e As System.Windows.Forms.LayoutEventArgs) Handles MyBase.Layout
Dim
p As Point ' redimensiona o groupbox para a área do formulário GroupBox1.Width = Me.ClientSize.Width
TabControl1.Width = Me.ClientSize.Width TabControl1.Height = Me.ClientSize.Height - GroupBox1.Size.Height
p.Y = GroupBox1.Height TabControl1.Location = p
|
Para controlar o redimensionamento dos controles filhos do TabControl vamos usar o código abaixo:
'
Redimensiona os controles filhos de TabControl em resposta ao
redimensionamento do tabcontrol
Private Sub TabControl1_Layout(ByVal
sender As Object,
ByVal e As System.Windows.Forms.LayoutEventArgs)
Handles MyBase.Layout Dim h As Integer = TabControl1.TabPages(TabControl1.SelectedIndex).Height Dim w As Integer = TabControl1.TabPages(TabControl1.SelectedIndex).Width
TextBoxHTML.Width = w WebBrowser.Height = h WebBrowser.Width = w txtURLVisitadas.Height = h txtURLVisitadas.Width = w
|
Quando o usuário clicar no botão - Go - devemos carregar a página no componente.
' Carrega a URL entrada pelo usuário no WebBrowser Private Sub carregaURL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
TextBoxURL.Text = "http://" & TextBoxURL.Text.ToString() End If carregaBrowser(TextBoxURL.Text.ToString()) Catch ex As Exception MsgBox(ex.Message) End
Try Cursor.Current = Cursors.Default End Sub
|
A função carregaBrowser() recebe a URL informada no TextBox e carrega a página usando o método Navigate do controle. Abaixo o seu código :
' Carrega a URL definida no contole WebBrowser Private Sub carregaBrowser(ByVal URL As String)Dim obj As System.Object = System.Reflection.Missing.Value Try WebBrowser.Navigate(URL, obj, obj, obj, obj) Catch ex As Exception Beep() End Try End Sub |
O código que controla em qual aba do controle TabControl o usuário clicou é dado a seguir :
Private Sub TabControl1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.Click' Se a tab "Código Fonte" foi selecionado carrega o HTML da página atual If TabControl1.SelectedIndex = 1 ThenIf WebBrowser.LocationURL.ToString() <> "" Then carregaHTML(TextBoxURL.Text) End If End If' Se a tab URLs visitadas foi selecionada vai para o fim do textbox If TabControl1.SelectedIndex = 2 Then txtURLVisitadas.SelectionStart = TextBoxHTML.Text.Length txtURLVisitadas.SelectionLength = 0 txtURLVisitadas.ScrollToCaret() End If End Sub
|
O código que faz a atualização das URLs visitadas é o seguinte :
'
Atualiza o textbox com as urls visitadas
Private Sub PaginaWeb_TitleChange(ByVal
titulo As String)
Handles PaginaWeb.TitleChange
txtURLVisitadas.Text += titulo & vbCrLf txtURLVisitadas.Text += " " & WebBrowser.LocationURL.ToString() & vbCrLf & vbCrLf End
If TituloAnterior = titulo End Sub
|
O código da função carregaHTML() que carrega o fonte do código HTML na caixa de texto da tab Código Fonte , é o seguinte :
'
Preenche o texto HTML da URL definida na caixa de texto da tab
Private Sub carregaHTML(ByVal
URL As String) Static Dim URLAnterior As String = ""
' inicia o leitor da stream para a pagina atual Dim myHttpWebRequest As HttpWebRequest = WebRequest.Create(URL) Dim myHttpWebResponse As HttpWebResponse = myHttpWebRequest.GetResponse() Dim recvStream As Stream = myHttpWebResponse.GetResponseStream()
' le o stream no formato "utf-8" Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8") Dim readStream As New StreamReader(recvStream, encode) Dim sPagina As String
sPagina += readStream.ReadLine() + vbCrLf End While
URLAnterior = URL Catch ex As Exception Beep() End Try End Sub
|
A navegação para frente e para trás e feita usando os métodos : GoBack() e GoForward(). Veja abaixo:
'
Carrega a oágina anterior
Private Sub PrevPage_Click(ByVal
sender As System.Object,
ByVal e As System.EventArgs)
Handles PicturePrevPage.Click Try WebBrowser.GoBack() Catch Beep() End Try End Sub' Carrega a próxima pagina Private Sub NextPage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureNextPage.Click
WebBrowser.GoForward() Catch Beep() End Try End Sub
|
Executando o projeto e fazendo um teste com a página do Google temos o resultado exibido na sequência de telas abaixo:
A página sendo exibida no controle WebBrowser |
O código HTML da página |
A URL visitada |
Pegue o código completo aqui : NetwebBrowser.zip
Até o próximo artigo VB.NET..
Veja os
Destaques e novidades do
SUPER DVD Visual Basic (sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET