0

私はc++で簡単なWindowsアプリを書いています。これは、WindowsMediaPlayerにコマンドを送信できるようになります。私の問題は、アプリをプレイリストの前の曲に移動させたいということです。

IWMPControls :: previous()はその役割を果たしているようですが、その動作はmsdnで記述されているものとは異なります。実際、この機能は現在のメディアを最初に巻き戻し、次に(現在の位置が2〜3秒未満の場合)前の曲に切り替わります。

2つの異なるボタンを実装したいと思います(理由は聞かないでください:))-1つは最初に巻き戻すためのもので、もう1つは前の曲に移動するためのものです。IWMPControls(または他のWMP関連のCOMインターフェイス)を介してこれを行う簡単な方法はありますか?

psリスト内の現在の曲の位置(インデックス)を取得できれば、これを処理できます。しかし、MSDNを読んでいる限り、プレイリストから現在のアイテムのインデックスを取得する簡単な方法はないようです...

4

2 に答える 2

0

まあ、私はそれを理解したと思います。1)最初にIWMPControls :: put_currentPosition(0.0)を呼び出し、次に2)IWMPControls :: previous()を呼び出すことにより、前の曲を強制することができます。

1)から2)の間に時間がかかるように思われるため、いくつかの問題が発生する可能性があります。明らかな解決策は、プログラム内で:: PostMessage()を使用することです(:: PostMessageからWMPではない)ので、ステップ1)を実行し、次にPostMessageを実行し、メッセージの処理中にステップ2)を実行します。

于 2010-05-20T07:38:56.587 に答える
0

外部から WMP アプリケーションを制御する最も簡単な方法は、メッセージを送信することだと思います。したがって、基本的な WinAPI に固執し、WMP ウィンドウ ハンドルを取得する必要があります。

ハンドルを取得したら、単純な Windows メッセージを使用して特定のコマンドを簡単に転送できます。

基本的には先ほどSendMessage取得したものを呼び出すだけですHWND wmp_windows_handle。通常、コントロール メッセージは、プレーヤーに実行させたいことを指定するWM_COMMANDメッセージです。wParam

たとえば、としてStop指定すると、コマンドを転送でき0x00004979ますwParam

これらのコマンド コードの詳細については、Google または Windows Media Player SDK を参照してください。探しているものが必ず見つかります。

また、私はあなたが上で説明したIWMPStuffに精通していないので、私があなたであり、それについて具体的な答えが必要な場合は、おそらくSDKを参照するでしょう.

于 2010-05-18T10:16:33.593 に答える