Instruções passo a passo: hospedando um controle ActiveX no WPF

Para habilitar a interação aprimorada com navegadores, você pode usar controles Microsoft ActiveX em seu aplicativo baseado em WPF. Este passo a passo demonstra como você pode hospedar o Microsoft Windows Media Player como um controle em uma página WPF.

As tarefas ilustradas neste passo a passo incluem:

  • Criação do projeto.

  • Criando o controle ActiveX.

  • Hospedando o controle ActiveX em uma página do WPF.

Depois de concluir este passo a passo, você entenderá como usar os controles ActiveX da Microsoft em seu aplicativo baseado em WPF.

Pré-requisitos

Você precisará dos seguintes componentes para concluir este passo a passo:

  • Microsoft Windows Media Player instalado no computador onde o Visual Studio está instalado.

  • Visual Studio 2010.

Criando o Projeto

Criar e configurar o projeto

  1. Crie um projeto de aplicativo WPF chamado HostingAxInWpf.

  2. Adicione um projeto de biblioteca de controle do Windows Forms à solução e nomeie-o como WmpAxLib.

  3. No projeto WmpAxLib, adicione uma referência ao assembly do Windows Media Player, que é chamado wmp.dll.

  4. Abra a Caixa de Ferramentas.

  5. Clique com o botão direito do mouse na Caixa de ferramentas e, em seguida, clique em Escolher Itens.

  6. Clique na guia Componentes COM, selecione o controle Windows Media Player e, em seguida, clique em OK.

    O controle do Windows Media Player é adicionado para à Caixa de ferramentas.

  7. No Gerenciador de Soluções, clique com o botão direito do mouse no arquivo UserControl1 e, em seguida, clique em Renomear.

  8. Altere o nome para WmpAxControl.vb ou WmpAxControl.cs, dependendo da linguagem.

  9. Se for solicitado que você renomeie todas as referências, clique em Sim.

Criando o controle ActiveX

Visual Studio gera automaticamente uma classe wrapper para um controle Microsoft ActiveX quando o controle é adicionado a uma AxHost superfície de design. O procedimento a seguir cria um assembly gerenciado chamado AxInterop.WMPLib.dll.

Criar o controle ActiveX

  1. Abra WmpAxControl.vb ou WmpAxControl.cs no Designer de Formulários do Windows.

  2. Na Caixa de ferramentas, adicione o controle do Windows Media Player para a superfície de design.

  3. Na janela Propriedades, defina o valor da Dock propriedade do controle do Windows Media Player como Fill.

  4. Compile o projeto de biblioteca do controle WmpAxLib.

Hospedando o controle ActiveX em uma página do WPF

Hospedar o controle ActiveX

  1. No projeto HostingAxInWpf, adicione uma referência ao assembly de interoperabilidade ActiveX gerado.

    Esse assembly é chamado AxInterop.WMPLib.dll e foi adicionado à pasta Debug do projeto WmpAxLib quando você importou o controle do Windows Media Player.

  2. Adicione uma referência ao assembly WindowsFormsIntegration, que é chamado WindowsFormsIntegration.dll.

  3. Adicione uma referência ao assembly do Windows Forms, chamado System.Windows.Forms.dll.

  4. Abra o MainWindow.xaml no WPF Designer.

  5. Nomeie o Grid elemento grid1.

    <Grid Name="grid1">
        
    </Grid>
    
  6. No modo Design ou no modo XAML, selecione o Window elemento .

  7. Na janela Propriedades, clique na guia Eventos.

  8. Clique duas vezes no Loaded evento.

  9. Insira o código a seguir para manipular o Loaded evento.

    Esse código cria uma instância do controle e adiciona uma instância do WindowsFormsHostAxWindowsMediaPlayer controle como seu filho.

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        // Create the interop host control.
        System.Windows.Forms.Integration.WindowsFormsHost host =
            new System.Windows.Forms.Integration.WindowsFormsHost();
    
        // Create the ActiveX control.
        WmpAxLib.AxWindowsMediaPlayer axWmp = new WmpAxLib.AxWindowsMediaPlayer();
    
        // Assign the ActiveX control as the host control's child.
        host.Child = axWmp;
    
        // Add the interop host control to the Grid
        // control's collection of child controls.
        this.grid1.Children.Add(host);
    
        // Play a .wav file with the ActiveX control.
        axWmp.URL = @"C:\Windows\Media\tada.wav";
    }
    
    Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
    
        ' Create the interop host control.
        Dim host As New System.Windows.Forms.Integration.WindowsFormsHost()
    
        ' Create the ActiveX control.
        Dim axWmp As New AxWMPLib.AxWindowsMediaPlayer()
    
        ' Assign the ActiveX control as the host control's child.
        host.Child = axWmp
    
        ' Add the interop host control to the Grid
        ' control's collection of child controls.
        Me.grid1.Children.Add(host)
    
        ' Play a .wav file with the ActiveX control.
        axWmp.URL = "C:\Windows\Media\tada.wav"
    
    End Sub
    
  10. Pressione F5 para compilar e executar o aplicativo.

Confira também