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

更新 : 2007 年 11 月

ブラウザでの操作を改善するには、WPF ベースのアプリケーションで Microsoft ActiveX コントロールを使用できます。このチュートリアルでは、WPF ページ上のコントロールとして Microsoft Windows Media Player をホストする方法を示します。

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

  • プロジェクトの作成。

  • ActiveX コントロールの作成

  • Windows Presentation Foundation ページでの ActiveX コントロールのホスト。

このチュートリアルで示すタスクの完全なコード一覧については、「Windows Presentation Foundation での ActiveX コントロールのホストのサンプル」を参照してください。

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

メモ   使用している設定またはエディションによっては、ヘルプの記載と異なるダイアログ ボックスやメニュー コマンドが表示される場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。

前提条件

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

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

  • Visual Studio 2008.

プロジェクトの作成

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

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

  2. アプリケーション プロジェクトに Windows フォーム コントロール ライブラリ プロジェクトを追加し、プロジェクトに WmpAxLib という名前を付けます。詳細については、「[新しいプロジェクトの追加] ダイアログ ボックス」を参照してください。

  3. ソリューション エクスプローラで、wmp.dll という名前の Microsoft Windows Media Player アセンブリへの参照を追加します。

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

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

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

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

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

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

  9. 全ての参照名を変更するかを確認するメッセージが表示されたら、[はい] をクリックします。

ActiveX コントロールの作成

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

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

  1. Windows フォーム デザイナで、WmpAxControl を開きます。

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

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

  4. F6 キーを押して、コントロール ライブラリをビルドします。

Windows Presentation Foundation ページでの ActiveX コントロールのホスト

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

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

    このアセンブリ名は AxInterop.WMPLib.dll で、Microsoft Windows Media Player コントロールをインポートした時点で、WmpAxLib プロジェクトの Debug フォルダに追加されています。

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

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

  4. Window1.xaml を開き、生成されているコードを次のコードに置き換えます。

    <Window x:Class="Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="HostingAxInWpf"
        Loaded="WindowLoaded" 
        >
    
        <Grid Name="grid1">
    
        </Grid>
    
    </Window>
    
    <Window x:Class="HostingAxInWpf.Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="HostingAxInWpf"
        Loaded="WindowLoaded" 
        >
    
        <Grid Name="grid1">
    
        </Grid>
    
    </Window>
    
  5. Window1.xaml.cs を開き、WindowLoaded メソッドの定義のコメントを解除します。

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

    このコードは、WindowsFormsHost コントロールのインスタンスを作成し、AxWindowsMediaPlayer コントロールのインスタンスをその子として追加します。

    Private Sub WindowLoaded(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\Windows XP Startup.wav"
    
    End Sub
    
    private void WindowLoaded(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.
        AxWMPLib.AxWindowsMediaPlayer axWmp = 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.
        this.grid1.Children.Add(host);
    
        // Play a .wav file with the ActiveX control.
        axWmp.URL = @"C:\WINDOWS\Media\Windows XP Startup.wav";
    }
    
  7. F5 キーを押してアプリケーションをビルドし、実行します。

参照

処理手順

Windows Presentation Foundation での ActiveX コントロールのホストのサンプル

概念

チュートリアル : Windows Presentation Foundation での Windows フォーム複合コントロールのホスト

チュートリアル : Windows フォームでの Windows Presentation Foundation コントロールのホスト

参照

ElementHost

WindowsFormsHost

その他の技術情報

WPF デザイナ

移行および相互運用性に関する「方法」トピック