トップ回答者
WPF で ツールボックスにMedia Playerを追加したい

質問
-
IDE : visual studio 2015 community を使用
WPFでWindows Media Playerを使いたく思っていますが、ツールボックスに追加できない状態です。下記が現在までの状況です。
下記の工程でツールボックスにMedia Playerの追加を試みています。
1.第1ステップ
-1.ツールボックスで右クリック、アイテムの選択、「COMコンポーネント」のタブをClick
-2.○にクルクルの表示が出たまま5分ほど待つも変化なし
https://social.msdn.microsoft.com/Forums/ja-JP/04ab110a-cfcc-46d5-95ee-5cd7a85f064f/com?forum=vsgeneralja
の症状に似ていますが、VS が落ちるまではいかない
-3.ここの質問サイトの解答にあるSystem32のwmp.dll(下記) をドラッグしてのCOM コンポーネントの追加を実施
wmp.dll (ファイルバージョン 12.0.16299.402 )
-4.操作は完了するも、下記のメッセージが出て、追加されていない。
**********
次のコントロールはツールボックスへ正常に追加されましたが、アクティブなデザイナーで有効になっていません
Windows Media Player
追加するコントロールに、現在のデザイナーおよび.NET Frameworkのバージョンとの互換性があること確認してください。
**********
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:l="http://schemas.livet-mvvm.net/2011/wpf"
2.第2ステップ
-1.Projectのpropertyから、フレームワークが .NET Freamwork 4.5 であったので、
一番新しそうな、 .NET Freamwork 4.6.1 に変更
-2.VS再起動し、先ほどと同じ操作でツールボックスにドラッグ・ドロップ 注意画面等は現れない。
-3.ツールボックスのすべてのWPFコントロールに、Windows Media Player が追加されている。が 薄字 になっている。
-4.一応ドラッグはできるが、つかむと、赤丸の斜線のマークが出て、ドラッグドロップはできない。
-5.Windows Media Playerの項目にカーソルを寄せると下記の表示が出る。
************
Windows Media Player
バージョン 1.0(Microsoft Corporationから)
COM コンポーネント
************
で、行き詰っています。解決策有ればご教授ください。
回答
-
WindowsMediaPlayerはWPFに直接配置することができないために「現在のデザイナー~」のメッセージがでます。
ツールボックスを右クリックして、「すべて表示」を選択してみてください。ツールボックス自体には追加さているが灰色になっていて選択できない状態になっているはずです。
WindowsMediaPlayerなどのコントロールはWindowFormのコントロールとして存在しているため、WPFには直接配置することができないためです。
でもそれでは困るので、いったんWindowsFormsHostというWPF上にWindowsFormsコントロールを配置するためのコントロールを使うと間接的に配置できるようになります。WPFにWindowsMediaPlayerを配置するには以下のような手順になります。
- ソリューションエクスプローラーのプロジェクトを右クリックして、追加->新しい項目->Windows Forms->ユーザーコントロール(WPFがついていないほう)を作成します。
- WindowsFormsのユーザーコントロールのデザイナがアクティブな状態であればツールバーのWindowsMediaPlayerは有効になっているので貼り付けます。
- ここまででいったんプロジェクトをビルドします。
- WPFのウィンドウのデザイナに戻って、ツールボックスからWindowFormsHostというコントロールを貼り付けます。
- 張り付けたWindowsFormsHostを選択した状態で、プロパティウィンドウのChildプロパティに新規作成というボタンがあるのでクリックします。
- 表示されるウィンドウのツリーにAxWindowsMediaPlayerという項目が出てくるので、それを選んでOKします。(作ったUserControlでもいいです)
- WindowsFormsHostにAxWMPLib:AxWindowsMediaPlayerが張り付けられます。
- さいどビルドしてじっこうするとウィンドウにWMPが張り付いているのが確認できます。
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク エンバー 2018年6月6日 4:50
すべての返信
-
WindowsMediaPlayerはWPFに直接配置することができないために「現在のデザイナー~」のメッセージがでます。
ツールボックスを右クリックして、「すべて表示」を選択してみてください。ツールボックス自体には追加さているが灰色になっていて選択できない状態になっているはずです。
WindowsMediaPlayerなどのコントロールはWindowFormのコントロールとして存在しているため、WPFには直接配置することができないためです。
でもそれでは困るので、いったんWindowsFormsHostというWPF上にWindowsFormsコントロールを配置するためのコントロールを使うと間接的に配置できるようになります。WPFにWindowsMediaPlayerを配置するには以下のような手順になります。
- ソリューションエクスプローラーのプロジェクトを右クリックして、追加->新しい項目->Windows Forms->ユーザーコントロール(WPFがついていないほう)を作成します。
- WindowsFormsのユーザーコントロールのデザイナがアクティブな状態であればツールバーのWindowsMediaPlayerは有効になっているので貼り付けます。
- ここまででいったんプロジェクトをビルドします。
- WPFのウィンドウのデザイナに戻って、ツールボックスからWindowFormsHostというコントロールを貼り付けます。
- 張り付けたWindowsFormsHostを選択した状態で、プロパティウィンドウのChildプロパティに新規作成というボタンがあるのでクリックします。
- 表示されるウィンドウのツリーにAxWindowsMediaPlayerという項目が出てくるので、それを選んでOKします。(作ったUserControlでもいいです)
- WindowsFormsHostにAxWMPLib:AxWindowsMediaPlayerが張り付けられます。
- さいどビルドしてじっこうするとウィンドウにWMPが張り付いているのが確認できます。
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク エンバー 2018年6月6日 4:50
-
Azulean様
応答ありがとうございます。
作ったUserControl も表示されません。
図の右側の部分の赤枠で表示された部分は、こちらで試行したときと同じ画面です。
図の左側の部分のTreeの部分も外観は同じですが、
top は WindowsFormsIntegration
childは、System.Windows.Forms.integration
その配下に ElementHost が一つだけあります。
rootには、もう一つ、Systems.Windows.Forms があります。
child は Systems.Windows.Forms でその配下は
BindingNavigator,Button,CheckBox,CheckListBox,ComboBox,ContainerControl,ContexMenuStrip,Control,DataGrid
以下2,30ありますが、省略して、最下部の5個をあげると、TrackBar,TreeView,UserControl,VscrollBar,WebBrowser
です。
ーーーー
ポイントの方ですが、申請して18時間ほど経ちましたが、まだ付加されていません。ので画像送れません。ご容赦ください。
-
Azuleanさま、応答ありがとうございます。
1.Childの新規作成のときの図は、Azulean さんが貼り付けた図と同じです。
2.3番のビルドの結果は、下記となります。
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========
ただし、この前に、下記が記載されています。
1>------ すべてのリビルド開始: プロジェクト:WindowsFormsApplication1, 構成:Debug ny CPU ------
1> COM 参照 'WMPLib' は ActiveX コントロール 'AxWMPLib' の相互運用アセンブリですが、コンパイラによって /link フラグでリンクされるように設定されています。この COM 参照は参照として処理され、リンクされません。
1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(2399,5): warning MSB3305: COM 参照 "WMPLib" をパス "C:\WINDOWS\system32\wmp.dll" から処理しています。プロパティ get アクセス操作子 'sessionPlaylistCount' (有効な戻り値の型のない型 'WMPLib.IWMPNowPlayingHelperDispatch' 上) がタイプ ライブラリ インポーターで見つかりました。 インポーターはこのプロパティをメソッドとしてインポートすることを試行します。
1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(2399,5): warning MSB3305: COM 参照 "WMPLib" をパス "C:\WINDOWS\system32\wmp.dll" から処理しています。'IWMPGraphEventHandler.NotifyAcquireCredentials' の引数のうち少なくとも 1 つをランタイム マーシャラーでマーシャリングできません。 したがってこのような引数はポインターとして渡され、アンセーフ コードの使用が必要になります。
1> WindowsFormsApplication1 -> D:\Users\___\Visual Studio 2015\Projects\____\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe -
Azuleanさま、応答ありがとうございます。
Media Player を wpf 上に貼り付けることができました。
ご指摘のように、「Windows Forms アプリケーション」 を作っていました。
ありがとうございました。
------
出来上がった、Media Playerですが、動作しませんというか、操作方法が分かっていないのかなのですが、
通常、左上に、ファイル(F) 表示(V) .... とかが出ていませんが、これらは、すべて作り込むものなのでしょうか
また、曲なども、ファイルからドラッグして、Media Player に ドロップオンさせようとしても、出来ないのですが、これもユーザーがつくりこむものでしょうか
出来上がったものは、図のようなものです。