非常简单的问题。在DirectSound API的MSDN documentation中,他们声明当我的应用程序处于焦点时,它将是唯一的可听程序。这正是我想要发生的事情,但是当设置此标志并通过我的应用程序播放声音时,我仍然可以听到计算机上的背景音乐。
所以问题是,为什么?是因为应用程序使用不同的低级API播放背景音乐,因此混合缓冲区不同?或者是否需要调整其他一些小技巧才能成为唯一的可听应用程序。
我问了一个类似/相关的问题here,没有回复。但是,如果您不知道特定DirectSound问题的答案,请再次知道,但是您知道如何成为唯一一个使用不同API的可听应用程序让我知道!
谢谢,我使用的是Windows XP 32Bit Professional,如果它有所作为。
答案 0 :(得分:2)
很久以前,Windows开发人员意识到允许一个应用程序完全控制音频系统(从而使其他应用程序静音)是一个坏主意。然后他们随后弃用了许多这些“独占”和前景/后台模式标志。我相信这种行为改变会一直回到DirectX 7.1(WinME),然后在DX 8上正式发布。这是10年前的事。
想象一下,当您将前台应用程序切换到以某种独占模式运行音频的应用程序时,您的视频会议应用程序会变为静音。在应用程序之间切换时无法可靠地听到任何人并不是一种很棒的体验。
事实上,在DX 8之前,许多用于多人游戏的流行语音通信应用程序会不断地嗅探前景窗口句柄,并将其用于调用SetCooperativeLevel,这样它们就不会被静音。
我想知道“你真正想做什么?”会很有趣。这使你认为你需要完全控制音频输出。
在Vista及更高版本中,有低级音频的WASAPI api。我相信有一个“独家”模式的概念,但我不知道是否胜过使用声卡的其他应用程序。 YMMV。