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 Lettore multimediale Windows come controllo in una pagina WPF.

Le attività illustrate nella procedura dettagliata sono le seguenti:

  • Creazione del progetto.

  • Creazione del controllo ActiveX.

  • Hosting del controllo ActiveX in 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, è necessario disporre dei componenti seguenti:

  • Microsoft Lettore multimediale Windows installato nel computer in cui è installato Visual Studio.

  • Visual Studio 2010.

Creazione del progetto

Per creare e impostare il progetto

  1. Creare un progetto di applicazione WPF denominato HostingAxInWpf.

  2. Aggiungere un progetto libreria di controlli Windows Form alla soluzione e denominare il progetto WmpAxLib.

  3. Nel progetto WmpAxLib aggiungere un riferimento all'assembly Lettore multimediale Windows 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 Scegli elementi.

  6. Fare clic sulla scheda Componenti COM, selezionare il controllo Lettore multimediale Windows e quindi fare clic su OK.

    Il controllo Lettore multimediale Windows viene aggiunto alla casella degli strumenti.

  7. In Esplora soluzioni fare clic con il pulsante destro del mouse sul file UserControl1 e quindi scegliere 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 AxHost classe wrapper 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 nella finestra di progettazione Windows Form.

  2. Nella casella degli strumenti aggiungere il controllo Lettore multimediale Windows all'area di progettazione.

  3. Nella Finestra Proprietà impostare il valore della proprietà del Dock controllo Lettore multimediale Windows su Fill.

  4. Compilare il progetto di libreria di controlli WmpAxLib.

Hosting del 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 Lettore multimediale Windows.

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

  3. Aggiungere un riferimento all'assembly Windows Form 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 WindowsFormsHost controllo e aggiunge un'istanza del AxWindowsMediaPlayer controllo 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.

Vedi anche