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
Erstellen Sie ein WPF-Anwendungsprojekt mit dem Namen
HostingAxInWpf
.Fügen Sie der Projektmappe ein Windows Forms Control Library-Projekt hinzu, und nennen Sie das Projekt
WmpAxLib
.Fügen Sie im WmpAxLib-Projekt einen Verweis auf die Windows Media Player-Assembly hinzu, die wmp.dllheißt.
Öffnen Sie die Werkzeugkiste.
Klicken Sie mit der rechten Maustaste in die Toolbox, und klicken Sie dann auf Elemente auswählen.
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.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die UserControl1--Datei, und klicken Sie dann auf Umbenennen.
Ändern Sie den Namen, abhängig von der Sprache, in
WmpAxControl.vb
oderWmpAxControl.cs
.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
Öffnen Sie WmpAxControl.vb oder WmpAxControl.cs im Windows Forms-Designer.
Fügen Sie aus der Toolbox-das Windows Media Player-Steuerelement zur Entwurfsoberfläche hinzu.
Im Eigenschaftenfenster den Wert der Eigenschaft Dock des Windows Media Player-Steuerelements auf Fillfestlegen.
Erstellen Sie das WmpAxLib-Steuerelementbibliotheksprojekt.
Hosten des ActiveX-Steuerelements auf einer WPF-Seite
Um das ActiveX-Steuerelement zu hosten
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.
Fügen Sie einen Verweis auf die WindowsFormsIntegration-Assembly hinzu, die WindowsFormsIntegration.dllheißt.
Fügen Sie einen Verweis auf die Windows Forms-Assembly hinzu, die System.Windows.Forms.dllheißt.
Öffnen Sie "MainWindow.xaml" im WPF-Designer.
Benennen Sie das Grid-Element
grid1
.<Grid Name="grid1"> </Grid>
Wählen Sie in der Entwurfsansicht oder XAML-Ansicht das Window-Element aus.
Klicken Sie im Eigenschaftenfenster auf die Registerkarte Ereignisse.
Doppelklicken Sie auf das Loaded-Ereignis.
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
Drücken Sie F5, um die Anwendung zu erstellen und auszuführen.
Siehe auch
.NET Desktop feedback