チュートリアル: WPF での ActiveX コントロールのホスト

ブラウザーとの対話を強化するために、WPF ベースのアプリケーションで Microsoft ActiveX コントロールを使用できます。 このチュートリアルでは、Microsoft Windows Media Player を WPF ページのコントロールとしてホストする方法について説明します。

このチュートリアルでは、以下のタスクを行います。

  • プロジェクトの作成。

  • ActiveX コントロールの作成。

  • WPF ページでの ActiveX コントロールのホスト。

このチュートリアルを完了すると、WPF ベースのアプリケーションで Microsoft ActiveX コントロールを使用する方法を理解できます。

必須コンポーネント

このチュートリアルを実行するには、次のコンポーネントが必要です。

  • Visual Studio がインストールされているコンピューターにインストールされている Microsoft Windows Media Player。

  • Visual Studio 2010。

プロジェクトの作成

プロジェクトを作成し、設定するには

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

  2. Windows フォーム コントロール ライブラリ プロジェクトをソリューションに追加し、プロジェクトに WmpAxLib という名前を付けます。

  3. WmpAxLib プロジェクトで、wmp.dll という名前の Windows Media Player アセンブリへの参照を追加します。

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

  5. [ツールボックス] を右クリックして、 [アイテムの選択] をクリックします。

  6. [COM コンポーネント] タブをクリックし、Windows Media Player コントロールを選択して、 [OK] をクリックします。

    Windows Media Player コントロールが [ツールボックス] に追加されます。

  7. ソリューション エクスプローラーで UserControl1 ファイルを右クリックし、 [名前の変更] をクリックします。

  8. 言語に応じて、名前を WmpAxControl.vb または WmpAxControl.cs に変更します。

  9. すべての参照の名前を変更するように求められたら、 [はい] をクリックします。

ActiveX コントロールの作成

コントロールがデザイン サーフェイスに追加されると、Visual Studio によって Microsoft ActiveX コントロールの AxHost ラッパー クラスが自動的に生成されます。 次の手順では、AxInterop.WMPLib.dll という名前のマネージ アセンブリを作成します。

ActiveX コントロールを作成するには

  1. Windows フォーム デザイナーで WmpAxControl.vb または WmpAxControl.cs を開きます。

  2. [ツールボックス] から、Windows Media Player コントロールをデザイン サーフェイスに追加します。

  3. プロパティ ウィンドウで、Windows Media Player コントロールの Dock プロパティの値を Fill に設定します。

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

WPF ページでの ActiveX コントロールのホスト

ActiveX コントロールをホストするには

  1. HostingAxInWpf プロジェクトで、生成された ActiveX 相互運用性アセンブリへの参照を追加します。

    このアセンブリは AxInterop.WMPLib.dll という名前であり、Windows Media Player コントロールをインポートしたときに WmpAxLib プロジェクトのデバッグ フォルダーに追加されたものです。

  2. WindowsFormsIntegration.dll という名前の WindowsFormsIntegration アセンブリへの参照を追加します。

  3. System.Windows.Forms.dll という名前の Windows フォーム アセンブリへの参照を追加します。

  4. WPF デザイナーで MainWindow.xaml を開きます。

  5. Grid 要素に grid1 という名前を付けます。

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

  7. プロパティ ウィンドウの [イベント] タブをクリックします。

  8. Loaded イベントをダブルクリックします。

  9. Loaded イベントを処理する次のコードを挿入します。

    このコードによって、WindowsFormsHost コントロールのインスタンスが作成され、AxWindowsMediaPlayer コントロールのインスタンスがその子として追加されます。

    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 キーを押してアプリケーションをビルドし、実行します。

関連項目