チュートリアル: WPF での ActiveX コントロールのホストWalkthrough: Hosting an ActiveX Control in WPF

ブラウザーとの対話を強化するために、WPFWPFベースのアプリケーションで Microsoft ActiveX コントロールを使用できます。To enable improved interaction with browsers, you can use Microsoft ActiveX controls in your WPFWPF-based application. このチュートリアルでは、WPFWPF ページのコントロールとして Microsoft Windows Media Player をホストする方法について説明します。This walkthrough demonstrates how you can host the Microsoft Windows Media Player as a control on a WPFWPF page.

このチュートリアルでは、以下のタスクを行います。Tasks illustrated in this walkthrough include:

  • プロジェクトの作成。Creating the project.

  • ActiveX コントロールを作成しています。Creating the ActiveX control.

  • WPF ページで ActiveX コントロールをホストする。Hosting the ActiveX control on a WPF Page.

このチュートリアルを完了すると、WPFWPFベースのアプリケーションで Microsoft ActiveX コントロールを使用する方法を理解できるようになります。When you have completed this walkthrough, you will understand how to use Microsoft ActiveX controls in your WPFWPF-based application.

必要条件Prerequisites

このチュートリアルを実行するには、次のコンポーネントが必要です。You need the following components to complete this walkthrough:

  • Microsoft Windows Media Player、Visual Studio がインストールされているコンピューターにインストールされます。Microsoft Windows Media Player installed on the computer where Visual Studio is installed.

  • Visual Studio 2010。Visual Studio 2010.

プロジェクトの作成Creating the Project

プロジェクトを作成し、設定するにはTo create and set up the project

  1. HostingAxInWpfという名前の WPF アプリケーションプロジェクトを作成します。Create a WPF Application project named HostingAxInWpf.

  2. ソリューションに Windows フォームコントロールライブラリプロジェクトを追加し、プロジェクトに WmpAxLibという名前を指定します。Add a Windows Forms Control Library project to the solution, and name the project WmpAxLib.

  3. WmpAxLib プロジェクトで、Windows Media Player アセンブリへの参照を追加します。このアセンブリには、wmp という名前が付けられています。In the WmpAxLib project, add a reference to the Windows Media Player assembly, which is named wmp.dll.

  4. ツールボックスを開きます。Open the Toolbox.

  5. ツールボックス内を右クリックし、 [項目の選択] をクリックします。Right-click in the Toolbox, and then click Choose Items.

  6. [COM コンポーネント] タブをクリックし、 [Windows Media Player] コントロールを選択して、 [OK] をクリックします。Click the COM Components tab, select the Windows Media Player control, and then click OK.

    Windows Media Player コントロールが [ツールボックス] に追加されます。The Windows Media Player control is added to the Toolbox.

  7. ソリューションエクスプローラーで、 UserControl1ファイルを右クリックし、[名前の変更] をクリックします。In Solution Explorer, right-click the UserControl1 file, and then click Rename.

  8. 言語に応じて、名前を WmpAxControl.vb または WmpAxControl.csに変更します。Change the name to WmpAxControl.vb or WmpAxControl.cs, depending on the language.

  9. すべての参照の名前を変更するように求めるメッセージが表示されたら、 [はい] をクリックします。If you are prompted to rename all references, click Yes.

ActiveX コントロールの作成Creating the ActiveX Control

コントロールがデザインサーフェイスに追加されると、Visual Studio は Microsoft ActiveX コントロールの AxHost ラッパークラスを自動的に生成します。Visual Studio automatically generates an AxHost wrapper class for a Microsoft ActiveX control when the control is added to a design surface. 次の手順では、WMPLib という名前のマネージアセンブリを作成します。The following procedure creates a managed assembly named AxInterop.WMPLib.dll.

ActiveX コントロールを作成するにはTo create the ActiveX control

  1. Windows フォームデザイナーで WmpAxControl .vb または WmpAxControl.cs を開きます。Open WmpAxControl.vb or WmpAxControl.cs in the Windows Forms Designer.

  2. [ツールボックス] から、Windows Media Player コントロールをデザイン画面に追加します。From the Toolbox, add the Windows Media Player control to the design surface.

  3. プロパティウィンドウで、Windows Media Player コントロールの Dock プロパティの値を Fillに設定します。In the Properties window, set the value of the Windows Media Player control's Dock property to Fill.

  4. WmpAxLib コントロールライブラリプロジェクトをビルドします。Build the WmpAxLib control library project.

WPF ページで ActiveX コントロールをホストするHosting the ActiveX Control on a WPF Page

ActiveX コントロールをホストするにはTo host the ActiveX control

  1. HostingAxInWpf プロジェクトで、生成された ActiveX 相互運用性アセンブリへの参照を追加します。In the HostingAxInWpf project, add a reference to the generated ActiveX interoperability assembly.

    このアセンブリは WMPLib という名前で、Windows Media Player コントロールをインポートしたときに、WmpAxLib プロジェクトの Debug フォルダーに追加されました。This assembly is named AxInterop.WMPLib.dll and was added to the Debug folder of the WmpAxLib project when you imported the Windows Media Player control.

  2. Windowsフォーム統合アセンブリへの参照を追加します。このアセンブリには、Windowsフォーム統合 dll という名前が付けられています。Add a reference to the WindowsFormsIntegration assembly, which is named WindowsFormsIntegration.dll.

  3. Windows フォームWindows Forms アセンブリへの参照を追加します。このアセンブリには、「system.string」という名前が付けられています。Add a reference to the Windows フォームWindows Forms assembly, which is named System.Windows.Forms.dll.

  4. WPF デザイナーで Mainwindow.xaml を開きます。Open MainWindow.xaml in the WPF Designer.

  5. Grid 要素に grid1という名前を指定します。Name the Grid element grid1.

    <Grid Name="grid1">
        
    </Grid>
    
  6. デザインビューまたは XAML ビューで、Window 要素を選択します。In Design view or XAML view, select the Window element.

  7. プロパティウィンドウで、 [イベント] タブをクリックします。In the Properties window, click the Events tab.

  8. Loaded イベントをダブルクリックします。Double-click the Loaded event.

  9. Loaded イベントを処理する次のコードを挿入します。Insert the following code to handle the Loaded event.

    このコードでは、WindowsFormsHost コントロールのインスタンスを作成し、その子として AxWindowsMediaPlayer コントロールのインスタンスを追加します。This code creates an instance of the WindowsFormsHost control and adds an instance of the AxWindowsMediaPlayer control as its child.

    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. F5 キーを押してアプリケーションをビルドし、実行します。Press F5 to build and run the application.

関連項目See also