次の方法で共有


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

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

このチュートリアルで説明するタスクは次のとおりです。

  • プロジェクトの作成。

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

関連項目