チュートリアル: 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。
プロジェクトの作成
プロジェクトを作成して設定するには
HostingAxInWpf
という名前の WPF アプリケーション プロジェクトを作成します。Windows フォーム コントロール ライブラリ プロジェクトをソリューションに追加し、プロジェクトに
WmpAxLib
名前を付けます。WmpAxLib プロジェクトで、wmp.dllという名前の Windows Media Player アセンブリへの参照を追加します。
ツールボックスを開きます。
ツールボックスを右クリックし、[項目の選択]をクリックします。
[COM コンポーネント] タブをクリックし、[Windows Media Player] コントロールを選択して、[OK] をクリックします。
Windows Media Player コントロールが ツールボックスに追加されます。
ソリューション エクスプローラーで、UserControl1 ファイルを右クリックし、名前の変更をクリックします。
言語に応じて、名前を
WmpAxControl.vb
またはWmpAxControl.cs
に変更します。すべての参照の名前を変更するように求められたら、[はい]
クリックします。
ActiveX コントロールの作成
Visual Studio では、コントロールがデザイン サーフェイスに追加されると、Microsoft ActiveX コントロールの AxHost ラッパー クラスが自動的に生成されます。 次の手順では、AxInterop.WMPLib.dllという名前のマネージド アセンブリを作成します。
ActiveX コントロールを作成するには
Windows フォーム デザイナーでWmpAxControl.vbまたはWmpAxControl.csを開きます。
ツールボックスから、Windows Media Player コントロールをデザイン 画面に追加します。
[プロパティ] ウィンドウで、Windows Media Player コントロールの Dock プロパティの値を Fillに設定します。
WmpAxLib コントロール ライブラリ プロジェクトをビルドします。
WPF ページでの ActiveX コントロールのホスト
ActiveX コントロールをホストするには
HostingAxInWpf プロジェクトで、生成された ActiveX 相互運用性アセンブリへの参照を追加します。
このアセンブリは AxInterop.WMPLib.dll という名前で、Windows Media Player コントロールをインポートしたときに WmpAxLib プロジェクトのデバッグ フォルダーに追加されました。
WindowsFormsIntegration.dllという名前の WindowsFormsIntegration アセンブリへの参照を追加します。
System.Windows.Forms.dllという名前の Windows フォーム アセンブリへの参照を追加します。
WPF デザイナーで MainWindow.xaml を開きます。
Grid 要素に
grid1
名前を付けます。<Grid Name="grid1"> </Grid>
デザイン ビューまたは XAML ビューで、Window 要素を選択します。
[プロパティ] ウィンドウで、[イベント] タブをクリックします。
Loaded イベントをダブルクリックします。
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
F5 キーを押して、アプリケーションをビルドして実行します。
関連項目
- ElementHost
- WindowsFormsHost
- Visual Studio で XAML のデザインを行う
- 手順: WPF で Windows フォームの複合コントロールをホストする
- チュートリアル: Windows フォームでの WPF 複合コントロールのホスト
.NET Desktop feedback