Exemplarische Vorgehensweise: 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 das 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
Zum Abschließen dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:
Microsoft Windows Media Player auf dem Computer installiert, auf dem Visual Studio installiert ist.
Visual Studio 2010.
Erstellen des Projekts
So erstellen und richten Sie das Projekt ein
Erstellen Sie ein WPF-Anwendungsprojekt mit dem Namen
HostingAxInWpf
.Fügen Sie dem Projekt eine Windows Forms Steuerelementbibliotheksprojekt hinzu, und benennen Sie das Projekt
WmpAxLib
.Fügen Sie im WmpAxLib-Projekt einen Verweis auf die Windows Media Player-Assembly hinzu, die wmp.dll benannt wird.
Öffnen Sie die Toolbox.
Klicken Sie mit der rechten Maustaste auf die Toolbox, und klicken Sie dann auf Elemente auswählen.
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.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf UserControl1.cs, und klicken Sie dann auf Umbenennen.
Ändern Sie den Namen je nach 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.dll erstellt.
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.
Legen Sie im Eigenschaftenfenster den Wert der Eigenschaft des Windows Media Player Steuerelements Dock auf Fill.
Erstellen Sie das WmpAxLib-Steuerelementbibliotheksprojekt.
Hosten des ActiveX-Steuerelements auf einer WPF-Seite
So hosten Sie das ActiveX-Steuerelement
Fügen Sie im HostingAxInWpf-Projekt einen Verweis auf die generierte ActiveX Interoperabilitätsassembly hinzu.
Diese Assembly wird AxInterop.WMPLib.dll benannt 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 Assembly „WindowsFormsIntegration”, die den Dateinamen „WindowsFormsIntegration.dll” hat, hinzu.
Fügen Sie einen Verweis auf die Windows Forms-Assembly hinzu, die System.Windows.Forms.dll genannt wird.
Öffnen Sie "MainWindow.xaml" im WPF-Designer.
Benennen Sie das Grid Element
grid1
.<Grid Name="grid1"> </Grid>
Wählen Sie in der Entwurfsansicht oder der XAML-Ansicht das Window-Element.
Klicken Sie im Fenster „Eigenschaften“ auf die Schaltfläche Ereignisse.
Doppelklicken Sie auf das Loaded-Ereignis.
Im folgenden Codebeispiel wird die Behandlung des Loaded-Ereignisses veranschaulicht.
Dieser Code erstellt eine Instanz des WindowsFormsHost Steuerelements und fügt eine Instanz des
AxWindowsMediaPlayer
Steuerelements als dessen 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.
Weitere Informationen
.NET Desktop feedback