0

很简单的问题。在 DirectSound API 的MSDN 文档中,他们声明当我的应用程序处于焦点时,它将是唯一可听的程序。这正是我想要发生的事情,但是当设置这个标志并通过我的应用程序播放声音时,我仍然可以听到我电脑上的背景音乐。

那么问题来了,为什么?是因为应用程序使用不同的低级 API 播放背景音乐,因此使用不同的混合缓冲区?还是我需要调整一些其他小技巧才能成为唯一可听的应用程序。

我在这里问了一个类似/相关的问题,没有回应。但是,如果您不知道特定 DirectSound 问题的答案,但您知道如何成为唯一具有不同 API 的可听应用程序,请再次告诉我!

谢谢,我使用的是 Windows XP 32Bit Professional,如果它有所作为的话。

4

1 回答 1

2

很久以前,Windows 开发人员意识到允许一个应用程序完全控制音频系统(从而使其他应用程序静音)是一个坏主意。然后他们随后弃用了许多“独占”和前景/背景模式标志。我相信这种行为变化可以一直追溯到 DirectX 7.1 (WinME),然后正式出现在 DX 8 上。这是 10 年前的事了。

想象一下,当您将前台应用程序切换到以某种独占模式运行音频的应用程序时,您的视频会议应用程序变得静音。在应用程序之间切换时无法可靠地听到任何人的声音并不是一种很好的体验。

事实上,在 DX 8 之前,许多流行的多人游戏语音通信应用程序会不断地嗅探前台窗口句柄并将其用于调用 SetCooperativeLevel,这样它们就不会被静音。

我认为知道“你真正想做的是什么?”会很有趣。这使您假设您需要完全控制音频输出。

在 Vista 和更高版本上,有用于低级音频的 WASAPI api。我相信有一个“独占”模式的概念,但我不知道是否胜过使用声卡的其他应用程序。YMMV。

于 2010-07-09T07:49:56.690 回答