Freigeben über


Anleitung: Hosten eines ActiveX-Steuerelements in WPF

Um eine verbesserte Interaktion mit Browsern zu ermöglichen, können Sie Microsoft ActiveX-Steuerelemente in Ihrer WPF-basierten Anwendung verwenden. In dieser Anleitung wird veranschaulicht, wie Sie den Microsoft Windows Media Player als Steuerelement auf einer WPF-Seite hosten können.

Die in dieser exemplarischen Vorgehensweise veranschaulichten Aufgaben umfassen:

  • Erstellen des Projekts.

  • Erstellen des ActiveX-Steuerelements.

  • Hosten des ActiveX-Steuerelements auf einer WPF-Seite.

Nachdem Sie diese exemplarische Vorgehensweise abgeschlossen haben, werden Sie verstehen, wie Sie Microsoft ActiveX-Steuerelemente in Ihrer WPF-Anwendung verwenden.

Voraussetzungen

Sie benötigen die folgenden Komponenten, um diese exemplarische Vorgehensweise abzuschließen:

  • Microsoft Windows Media Player auf dem Computer installiert, auf dem Visual Studio installiert ist.

  • Visual Studio 2010.

Erstellen des Projekts

So erstellen und einrichten Sie das Projekt

  1. Erstellen Sie ein WPF-Anwendungsprojekt mit dem Namen HostingAxInWpf.

  2. Fügen Sie der Projektmappe ein Windows Forms Control Library-Projekt hinzu, und nennen Sie das Projekt WmpAxLib.

  3. Fügen Sie im WmpAxLib-Projekt einen Verweis auf die Windows Media Player-Assembly hinzu, die wmp.dllheißt.

  4. Öffnen Sie die Werkzeugkiste.

  5. Klicken Sie mit der rechten Maustaste in die Toolbox, und klicken Sie dann auf Elemente auswählen.

  6. Klicken Sie auf die Registerkarte COM-Komponenten, und wählen Sie anschließend das Steuerelement Windows Media Player aus, und klicken Sie dann auf OK.

    Das Windows Media Player-Steuerelement wird der Toolboxhinzugefügt.

  7. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die UserControl1--Datei, und klicken Sie dann auf Umbenennen.

  8. Ändern Sie den Namen, abhängig von der Sprache, in WmpAxControl.vb oder WmpAxControl.cs.

  9. Wenn Sie aufgefordert werden, alle Verweise umzubenennen, klicken Sie auf Ja.

Erstellen des ActiveX-Steuerelements

Visual Studio generiert automatisch eine AxHost Wrapperklasse für ein Microsoft ActiveX-Steuerelement, wenn das Steuerelement einer Entwurfsoberfläche hinzugefügt wird. Im folgenden Verfahren wird eine verwaltete Assembly mit dem Namen AxInterop.WMPLib.dllerstellt.

So erstellen Sie das ActiveX-Steuerelement

  1. Öffnen Sie WmpAxControl.vb oder WmpAxControl.cs im Windows Forms-Designer.

  2. Fügen Sie aus der Toolbox-das Windows Media Player-Steuerelement zur Entwurfsoberfläche hinzu.

  3. Im Eigenschaftenfenster den Wert der Eigenschaft Dock des Windows Media Player-Steuerelements auf Fillfestlegen.

  4. Erstellen Sie das WmpAxLib-Steuerelementbibliotheksprojekt.

Hosten des ActiveX-Steuerelements auf einer WPF-Seite

Um das ActiveX-Steuerelement zu hosten

  1. Fügen Sie im HostingAxInWpf-Projekt einen Verweis auf die generierte ActiveX-Interoperabilitätsassembly hinzu.

    Diese Assembly heißt AxInterop.WMPLib.dll und wurde dem Debugordner des WmpAxLib-Projekts hinzugefügt, wenn Sie das Windows Media Player-Steuerelement importiert haben.

  2. Fügen Sie einen Verweis auf die WindowsFormsIntegration-Assembly hinzu, die WindowsFormsIntegration.dllheißt.

  3. Fügen Sie einen Verweis auf die Windows Forms-Assembly hinzu, die System.Windows.Forms.dllheißt.

  4. Öffnen Sie "MainWindow.xaml" im WPF-Designer.

  5. Benennen Sie das Grid-Element grid1.

    <Grid Name="grid1">
        
    </Grid>
    
  6. Wählen Sie in der Entwurfsansicht oder XAML-Ansicht das Window-Element aus.

  7. Klicken Sie im Eigenschaftenfenster auf die Registerkarte Ereignisse.

  8. Doppelklicken Sie auf das Loaded-Ereignis.

  9. Fügen Sie den folgenden Code ein, um das Loaded-Ereignis zu behandeln.

    Dieser Code erstellt eine Instanz des WindowsFormsHost-Steuerelements und fügt eine Instanz des AxWindowsMediaPlayer-Steuerelements als untergeordnetes Element hinzu.

    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. Drücken Sie F5, um die Anwendung zu erstellen und auszuführen.

Siehe auch