0

.NET Windows Media Player ライブラリを使用して、Windows Media Player のさまざまなファイル プロパティ (ユーザー評価など) をプログラムで取得および変更することができました。Player.openPlayer(url)同じライブラリを使用して、呼び出しを通じて Windows Media Player インスタンスを制御 (再生、停止、次へなど) したいと考えています。理論的には、これは Player.controls オブジェクトを介して非常に可能であるはずですが、アクセスしようとすると、どのコントロールも使用できません。コントロール オブジェクトを除いて、ほぼすべての Player プロパティ/メソッド/イベントを使用できます。私が試したことを説明するためのサンプルコードを次に示します。

import clr
clr.AddReferenceToFile( "Interop.WMPLib.dll" )
from Interop.WMPLib import WindowsMediaPlayerClass
wmp = WindowsMediaPlayerClass()
wmp.openPlayer(r"C:\Users\Public\Music\Sample Music\Kalimba.mp3")

これはうまくいきますが、次のようにすると:

print wmp.controls.isAvailable("play").ToString()
print wmp.controls.isAvailable("pause").ToString()
print wmp.controls.isAvailable("stop").ToString()
...

コントロールごとに false になります。これらのコントロールが (単純な) アプリケーションで使用できないのはなぜですか? 私はおそらくこれについて間違った方法で進んでいますか?私は WMP 12 を使用しているので、互換性があるはずです。別の API を使用したくないのですが、現時点では何でも試してみたいと思っています。

参照用のドキュメントは次のとおりです。 http://msdn.microsoft.com/en-us/library/dd564034%28v=vs.85%29.aspx

編集:クイックフィックスは今のところ保持されていますが、実際の解決策はまだ見つかっていません.

4

1 に答える 1

0

試す

print wmp.controls.get_isAvailable("play");
print wmp.controls.get_isAvailable("stop");
etc.

ただし、これらのコントロールは、ファイルを上記の WMP コントロールにロードするまで使用できないことに注意してください。

最初wmp.URLに再生したいファイルのパスを設定し、読み込みが完了したら を呼び出すだけwmp.controls.play();です。OpenStateChangeイベントをリッスンして、ロードされているかどうかを確認できます。

于 2012-04-18T10:38:46.550 に答える