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 exemplarischen Vorgehensweise wird veranschaulicht, wie Sie den Microsoft Windows Media Player als Steuerelement auf einer WPF-Seite hosten können.

In dieser exemplarischen Vorgehensweise werden u. a. folgende Aufgaben veranschaulicht:

  • Erstellen des Projekts.

  • Erstellen des ActiveX-Steuerelements.

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

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

Voraussetzungen

Sie benötigen die folgenden Komponenten, um diese Schritt-für-Schritt-Anleitung abzuschließen.

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

  • Visual Studio 2010.

Projekt erstellen

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 Toolbox.

  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 ", wählen Sie das Windows Media Player-Steuerelement aus, und klicken Sie dann auf "OK".

    Das Windows Media Player-Steuerelement wird der Toolbox hinzugefügt.

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

  8. Ändern Sie den Namen in WmpAxControl.vb oder WmpAxControl.cs, je nach Sprache.

  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. Legen Sie im Eigenschaftenfenster den Wert der Eigenschaft des Windows Media Player-Steuerelements Dock auf Fill.

  4. Erstellen Sie das WmpAxLib-Steuerelementbibliotheksprojekt.

Hosten des ActiveX-Steuerelements auf einer WPF-Seite

So hosten Sie das ActiveX-Steuerelement

  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 den Namen WindowsFormsIntegration.dllträgt.

  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 Fenster „Eigenschaften“ auf die Schaltfläche 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 untergeordnete Instanz 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