Udostępnij za pośrednictwem


Przewodnik: hostowanie kontrolki ActiveX w WPF

Aby umożliwić ulepszoną interakcję z przeglądarkami, możesz użyć kontrolek Microsoft ActiveX w aplikacji opartej na WPF. W tym przewodniku pokazano, jak można hostować program Microsoft Windows Media Player jako kontrolkę na stronie WPF.

Zadania przedstawione w tym przewodniku obejmują:

  • Tworzenie projektu.

  • Tworzenie kontrolki ActiveX.

  • Hostowanie kontrolki ActiveX na stronie WPF.

Po ukończeniu tego przewodnika dowiesz się, jak używać kontrolek Microsoft ActiveX w aplikacji opartej na WPF.

Warunki wstępne

Do ukończenia tego przewodnika potrzebne są następujące składniki:

  • Program Microsoft Windows Media Player zainstalowany na komputerze, na którym zainstalowano program Visual Studio.

  • Visual Studio 2010.

Tworzenie projektu

Aby utworzyć i skonfigurować projekt

  1. Utwórz projekt aplikacji WPF o nazwie HostingAxInWpf.

  2. Dodaj projekt Biblioteka kontrolek formularzy systemu Windows do rozwiązania i nadaj projektowi nazwę WmpAxLib.

  3. W projekcie WmpAxLib dodaj odwołanie do zestawu Windows Media Player o nazwie wmp.dll.

  4. Otwórz przybornika.

  5. Kliknij prawym przyciskiem myszyprzybornika , a następnie kliknij Wybierz elementy.

  6. Kliknij kartę składniki COM, wybierz sterowanie Windows Media Player, a następnie kliknij przycisk OK.

    Kontrolka Windows Media Player jest dodawana do przybornika .

  7. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy plik UserControl1, a następnie kliknij Zmień nazwę.

  8. Zmień nazwę na WmpAxControl.vb lub WmpAxControl.cs, w zależności od języka.

  9. Jeśli zostanie wyświetlony monit o zmianę nazwy wszystkich odnośników, kliknij przycisk Tak.

Tworzenie kontrolki ActiveX

Program Visual Studio automatycznie generuje klasę otoki AxHost dla kontrolki Microsoft ActiveX po dodaniu kontrolki do powierzchni projektowej. Poniższa procedura tworzy zarządzany zestaw o nazwie AxInterop.WMPLib.dll.

Aby utworzyć kontrolkę ActiveX

  1. Otwórz WmpAxControl.vb lub WmpAxControl.cs w programie Windows Forms Designer.

  2. Dodaj z przybornikakontrolkę Windows Media Player do powierzchni projektowej.

  3. W oknie Właściwości ustaw wartość właściwości Dock kontrolki Windows Media Player na wartość Fill.

  4. Skompiluj projekt biblioteki kontrolek WmpAxLib.

Hostowanie kontrolki ActiveX na stronie WPF

Aby hostować kontrolkę ActiveX

  1. W projekcie HostingAxInWpf dodaj odwołanie do wygenerowanego zestawu współdziałania ActiveX.

    Ten zestaw ma nazwę AxInterop.WMPLib.dll i został dodany do folderu Debug projektu WmpAxLib podczas importowania kontrolki Windows Media Player.

  2. Dodaj odwołanie do zestawu WindowsFormsIntegration o nazwie WindowsFormsIntegration.dll.

  3. Dodaj odwołanie do zestawu Windows Forms o nazwie System.Windows.Forms.dll.

  4. Otwórz plik MainWindow.xaml w projektancie WPF.

  5. Nadaj Grid elementowi nazwę grid1.

    <Grid Name="grid1">
        
    </Grid>
    
  6. W widoku projektu lub widoku XAML wybierz element Window.

  7. W oknie Właściwości kliknij kartę Zdarzenia.

  8. Kliknij dwukrotnie zdarzenie Loaded.

  9. Wstaw następujący kod, aby obsłużyć zdarzenie Loaded.

    Ten kod tworzy wystąpienie kontrolki WindowsFormsHost i dodaje wystąpienie kontrolki AxWindowsMediaPlayer jako jej element podrzędny.

    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. Naciśnij F5, aby skompilować i uruchomić aplikację.

Zobacz też