1

WinMM についてできることはすべて学びました (ミキサーの開閉、コントロールの列挙など)。困惑しているのは、WPF の MediaElement が WinMM を介して私の設定を無視しているように見えることですが、Windows のボリューム ミキサーは、設定を正しく変更していることを示しています。 .

したがって、基本的には自分のコントロールでボリュームをミュートし、ボリューム ミキサーでミュートされていることを確認し、サウンドを再生して聞いてから、ボリューム ミキサーのミュート ボタンをダブルクリックして、サウンドを再生しても聞こえないようにすることができます。

Windows のボリューム ミキサーを介して WinMM API 呼び出し以上の何かが行われますが、ディスプレイは WinMM 設定を使用しています。

足りないものはありますか?

私はすべての回線を使用しましたが、Speaker/WaveOut のみが機能します。ラインからボリュームとミュートのコントロールを取得していますが、どちらも同じ効果があります。

これは、これを引き起こしている MediaElement だけです。WinMM を介してサウンドを再生する場合、またはネイティブ コントロールまたはエクスプローラーが組み込まれている場合は、ボリューム コントロールでミュートできます。

私の最初の理論は、Windows7 でテストしているため、MediaElement がアプリケーションの既定のセッションとは別のセッションに割り当てられており、どういうわけかボリューム ミキサーがアプリケーション内のすべてのセッションに影響を与えているというものです。その時点で、OS に応じて WinMM と WASAPI のどちらを使用するかを選択する必要があります。それが本当なら、WinMM は Windows の主張のように実際にはサポートされていません (下位互換性のため) が、古いテクノロジ (Winforms や AFX/MFC など) を対象としている可能性があります。

編集:私はこの回答でコードを使用しています: https://stackoverflow.com/a/294525/491837

4

0 に答える 0