Condividi tramite


Procedura dettagliata: Hosting di un controllo ActiveX in WPF

Per abilitare un'interazione migliorata con i browser, è possibile usare i controlli Microsoft ActiveX nell'applicazione basata su WPF. Questa procedura dettagliata illustra come ospitare Microsoft Windows Media Player come controllo in una pagina WPF.

Le attività illustrate in questa procedura dettagliata includono:

  • Creazione del progetto.

  • Creazione del controllo ActiveX.

  • Ospitare il controllo ActiveX su una pagina WPF.

Dopo aver completato questa procedura dettagliata, si apprenderà come usare i controlli Microsoft ActiveX nell'applicazione basata su WPF.

Prerequisiti

Per completare questa procedura dettagliata sono necessari i componenti seguenti:

  • Microsoft Windows Media Player installato nel computer in cui è installato Visual Studio.

  • Visual Studio 2010.

Creazione del progetto

Per creare e configurare il progetto

  1. Creare un progetto di applicazione WPF chiamato HostingAxInWpf.

  2. Aggiungi un progetto Libreria di controlli Windows Forms alla soluzione e denominalo WmpAxLib.

  3. Nel progetto WmpAxLib aggiungere un riferimento all'assembly di Windows Media Player, denominato wmp.dll.

  4. Aprire la casella degli strumenti .

  5. Fare clic con il pulsante destro del mouse nella casella degli strumenti e quindi scegliere Scegliere elementi.

  6. Fare clic sulla scheda componenti COM, selezionare il controllo Windows Media Player e quindi fare clic su OK.

    Il controllo Windows Media Player viene aggiunto alla casella degli strumenti .

  7. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul file UserControl1, quindi fare clic su Rinomina.

  8. Modificare il nome in WmpAxControl.vb o WmpAxControl.cs, a seconda della lingua.

  9. Se viene richiesto di rinominare tutti i riferimenti, fare clic su .

Creazione del controllo ActiveX

Visual Studio genera automaticamente una classe wrapper AxHost per un controllo Microsoft ActiveX quando il controllo viene aggiunto a un'area di progettazione. La procedura seguente crea un assembly gestito denominato AxInterop.WMPLib.dll.

Per creare il controllo ActiveX

  1. Aprire WmpAxControl.vb o WmpAxControl.cs in Progettazione di Windows Forms.

  2. Dalla casella degli strumenti aggiungere il controllo Windows Media Player all'area di progettazione.

  3. Nella finestra Proprietà impostare il valore della proprietà Dock del controllo Windows Media Player su Fill.

  4. Compilare il progetto di libreria di controlli WmpAxLib.

Ospitare il controllo ActiveX in una pagina WPF

Per ospitare il controllo ActiveX

  1. Nel progetto HostingAxInWpf, aggiungere un riferimento all'assembly di interoperabilità ActiveX generato.

    Questo assembly è denominato AxInterop.WMPLib.dll ed è stato aggiunto alla cartella Debug del progetto WmpAxLib quando è stato importato il controllo Windows Media Player.

  2. Aggiungere un riferimento all'assembly WindowsFormsIntegration denominato WindowsFormsIntegration.dll.

  3. Aggiungere un riferimento all'assembly Windows Forms, che è denominato System.Windows.Forms.dll.

  4. Aprire MainWindow.xaml nella finestra di progettazione WPF.

  5. Denominare l'elemento Gridgrid1.

    <Grid Name="grid1">
        
    </Grid>
    
  6. Nella visualizzazione Progettazione o nella visualizzazione XAML selezionare l'elemento Window.

  7. Nella finestra Proprietà, fare clic sulla scheda Eventi.

  8. Fare doppio clic sull'evento Loaded.

  9. Inserire il codice seguente per gestire l'evento Loaded.

    Questo codice crea un'istanza del controllo WindowsFormsHost e aggiunge un'istanza del controllo AxWindowsMediaPlayer come figlio.

    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. Premere F5 per compilare ed eseguire l'applicazione.

Vedere anche