0

非常に簡単な質問です。DirectSound APIのMSDNドキュメントには、アプリケーションにフォーカスがある場合は、それが唯一の可聴プログラムになると記載されています。これはまさに私が望んでいることですが、このフラグを設定してアプリケーションでサウンドを再生すると、コンピューターでバックグラウンドミュージックを聞くことができます。

だから問題は、なぜですか?これは、アプリケーションが異なる低レベルAPIを使用してバックグラウンド音楽を再生しているため、つまり異なるミキシングバッファーを使用しているためですか?または、唯一の可聴アプリケーションになるために微調整する必要がある他の小さなトリックがありますか?

私はここで同様の/関連する質問をしましたが、応答はありませんでした。ただし、DirectSoundの特定の質問に対する答えがわからないが、別のAPIを使用して唯一の可聴アプリケーションになる方法を知っている場合は、もう一度お知らせください。

おかげで、違いがあれば、私はWindows XP32BitProfessionalを使用しています。

4

1 に答える 1

2

ずっと前に、Windows 開発者は、1 つのアプリケーションがオーディオ システムを完全に制御できるようにする (他のアプリケーションをミュートする) のは良くない考えであることに気付きました。その後、これらの「排他的」およびフォアグラウンド/バックグラウンド モード フラグの多くを非推奨にしました。この動作の変更は、DirectX 7.1 (WinME) までさかのぼり、正式には DX 8 のあらゆる場所にまでさかのぼると思います。これは 10 年前のことです。

フォアグラウンド アプリケーションを何らかの排他モードでオーディオを実行するアプリに切り替えたときに、ビデオ会議アプリがミュートになると想像してください。アプリを切り替えるときに誰かの声を確実に聞くことができないのは、素晴らしい経験ではありません.

実際のところ、DX 8 より前は、マルチプレイヤー ゲーム用の多くの一般的な音声通信アプリは、フォアグラウンド ウィンドウ ハンドルを継続的にスニッフィングし、それを SetCooperativeLevel の呼び出しに使用して、ミュートされないようにしていました。

「あなたが本当にやりたいことは何ですか?」ということを知るのは面白いと思います。つまり、オーディオ出力を完全に制御する必要があると思われます。

Vista 以降では、低レベル オーディオ用の WASAPI API があります。「排他的」モードの概念があると思いますが、サウンド カードを使用する他のアプリより優れているかどうかはわかりません。YMMV。

于 2010-07-09T07:49:56.690 に答える