Artigo: 311290 - Última revisão: domingo, 13 de Maio de 2007 - Revisão: 4.1

COMO: Obter largura e altura da window.open() dentro de um anfitrião WebBrowser utilizando o Visual Basic .NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Aplicações do Visual Basic .NET que alojam o WebBrowser controlo pode processar o evento NewWindow2 para chamar uma chamada de window.open gerada pelo script. No entanto, não é imediatamente óbvia como a aplicação pode obter os valores de largura e altura que são passados para o argumento de funcionalidades da window.open para que o anfitrião WebBrowser pode redimensionar a janela correctamente. Este artigo demonstra como obter a nova largura e altura do WebBrowser controlo e a redimensionar o formulário em conformidade.

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • Microsoft Visual Studio .NET
  • Microsoft Internet Explorer 5.5 Service Pack 2 ou posterior

Criar o exemplo

Esta secção descreve como hospede o controlo WebBrowser numa aplicação do Visual Basic. NET, como processar o evento NewWindow2 do controlo WebBrowser e, em seguida, como processar WindowSetWidth e os eventos WindowSetHeight para redimensionar a aplicação.
  1. Crie uma nova aplicação do Windows no Visual Basic da seguinte forma:
    1. Inicie o Visual Studio NET..
    2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
    3. Em Project Types , clique em Projectos do Visual Basic . Em modelos , clique em Aplicação do Windows .
  2. Na caixa de ferramentas, clique em Geral , clique com o botão direito do rato na caixa de ferramentas e, em seguida, clique em Customize Toolbox .
  3. No separador Componentes COM , seleccione a caixa de verificação Microsoft Web Browser e, em seguida, clique em OK .
  4. Na caixa de ferramentas, faça duplo clique no Explorador de janela.
  5. Adicione um controlo de botão e um controlo de caixa de texto ao formulário.
  6. Faça duplo clique no botão para ver a implementação do evento AoFazerClique do botão na janela de código e adicione o seguinte código:
        Private Sub Button1_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles Button1.Click
                AxWebBrowser1.Navigate(TextBox1.Text)
        End Sub
    						
    este código permite-lhe procurar o URL que especificar na caixa de texto.
  7. Adicione o seguinte código para escrever a função de rotina de tratamento para NewWindow2 :
        Private Sub AxWebBrowser1_NewWindow2(ByVal sender As Object, _
            ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event) _
            Handles AxWebBrowser1.NewWindow2
                Dim frmWB As Form1
                frmWB = New Form1()
    
                frmWB.AxWebBrowser1.RegisterAsBrowser = True
                e.ppDisp = frmWB.AxWebBrowser1.Application
                frmWB.Visible = True
        End Sub
    					
  8. Adicione o seguinte código para escrever a função de rotina de tratamento para WindowSetHeight :
        Private Sub AxWebBrowser1_WindowSetHeight(ByVal sender As Object, _
            ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetHeightEvent) _
            Handles AxWebBrowser1.WindowSetHeight
                Dim heightDiff As Integer
                heightDiff = Me.Height - Me.AxWebBrowser1.Height
                Me.Height = heightDiff + e.height
        End Sub
    					
  9. Adicione o seguinte código para escrever a função de rotina de tratamento para WindowSetWidth :
        Private Sub AxWebBrowser1_WindowSetWidth(ByVal sender As Object, _
            ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetWidthEvent) _
            Handles AxWebBrowser1.WindowSetWidth
                Dim widthDiff As Integer
                widthDiff = Me.Width - Me.AxWebBrowser1.Width
                Me.Width = widthDiff + e.width
        End Sub
    					

Exemplo de código concluída

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "
    'Omitted
#End Region

    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
            AxWebBrowser1.Navigate(TextBox1.Text)
    End Sub

    Private Sub AxWebBrowser1_NewWindow2(ByVal sender As Object, _
        ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event) _
        Handles AxWebBrowser1.NewWindow2
            'MessageBox.Show(AxWebBrowser1.Height & ":" & AxWebBrowser1.Width)

            'MessageBox.Show(doc.body.innerHTML)
            Dim frmWB As Form1
            frmWB = New Form1()

            frmWB.AxWebBrowser1.RegisterAsBrowser = True
            'frmWB.AxWebBrowser1.Navigate2("about:blank")
            e.ppDisp = frmWB.AxWebBrowser1.Application
            frmWB.Visible = True
            'MessageBox.Show(frmWB.AxWebBrowser1.Height & ":" & frmWB.AxWebBrowser1.Width)
    End Sub

    Private Sub AxWebBrowser1_WindowSetHeight(ByVal sender As Object, _
        ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetHeightEvent) _
        Handles AxWebBrowser1.WindowSetHeight
            'MessageBox.Show("In SetHeight" & Me.Height & ":" & e.height)
            Dim heightDiff As Integer
            heightDiff = Me.Height - Me.AxWebBrowser1.Height
            Me.Height = heightDiff + e.height
    End Sub

    Private Sub AxWebBrowser1_WindowSetWidth(ByVal sender As Object, _
        ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetWidthEvent) _
        Handles AxWebBrowser1.WindowSetWidth
            'MessageBox.Show("In SetWidth" & Me.Width & ":" & e.width)
            Dim widthDiff As Integer
            widthDiff = Me.Width - Me.AxWebBrowser1.Width
            Me.Width = widthDiff + e.width
    End Sub

End Class
				

Verificar se funciona

  1. Compilar a aplicação.
  2. Abra o bloco de notas. Crie um novo ficheiro chamado Test.htm e adicione o seguinte código:
    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
    <TITLE></TITLE>
    <script>
    	function openWin()
    	{
    		var win;
    		win = window.open("http://www.microsoft.com","blah","width=600, height=600");
    	}
    </script>
    </HEAD>
    <BODY>
    <button onClick=openWin()>Open Window</button>
    </BODY>
    </HTML>
    					
  3. Guarde Test.htm no seu servidor Web.
  4. Execute a aplicação.
  5. Navegue para a página Test.htm e, em seguida, clique no botão. Repare que o empresa ou Web site da Microsoft é aberto numa nova instância da aplicação. O formulário é redimensionado acordo com para as funcionalidades que transmitido com a chamada para window.open .

Referências

Para obter informações adicionais, clique nos números de artigo existentes abaixo para visualizar os artigos na Microsoft Knowledge Base:
311284  (http://support.microsoft.com/kb/311284/EN-US/ ) COMO: Processar eventos do documento de uma aplicação do Visual Basic .NET
259963  (http://support.microsoft.com/kb/259963/EN-US/ ) COMO: Obter a largura e altura fornecidos no interior de window.Open Visual C++ WebBrowser anfitrião
Para obter mais informações sobre o controlo WebBrowser, bem como os métodos, propriedades e os eventos que expõe, consulte o seguinte Web site da Microsoft:
Controlo do WebBrowser: Referência para programadores do Visual Basic
http://msdn2.microsoft.com/en-us/library/Aa752043.aspx (http://msdn2.microsoft.com/en-us/library/Aa752043.aspx)
Para obter mais informações sobre como desenvolver soluções baseadas na Web para o Microsoft Internet Explorer, visite os seguintes Web sites da Microsoft:
http://msdn.microsoft.com/ie/ (http://msdn.microsoft.com/ie/)

http://support.microsoft.com/iep (http://support.microsoft.com/iep)

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbhowtomaster KB311290 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 311290  (http://support.microsoft.com/kb/311290/en-us/ )