gpt4 book ai didi

windows - 如何检测 Windows XP 机器上是否播放任何声音

转载 作者:可可西里 更新时间:2023-11-01 13:59:45 27 4
gpt4 key购买 nike

是否可以检测 Windows XP 机器上是否播放任何声音?任何语言的帮助都会很有用。我基本上需要编写一个始终运行的程序,并在播放声音时将一些文本输出到文件中。我不需要关于声音的任何具体信息,只需要声音是否正在播放。我不在乎扬声器是否真正打开或类似的东西。

最佳答案

问题很简单,但答案很难。您需要利用 DirectSound 来实现您的目的。我还没有测试我的解决方案,但你可以尝试调用 IDirectSoundBuffer8::GetStatus() , 然后检查 pdwStatus 参数的返回值。根据 MSDN,如果正在听到缓冲区,则设置 DSBSTATUS_PLAYING

由于您没有说明您使用的编程语言,我使用我最喜欢的语言 Delphi 实现以下示例。

  var
dwStatus: DWORD;
hResult: HRESULT;

hResult := GetStatus(@dwStatus);
if hResult = DS_OK then begin
if dwStatus and DSBSTATUS_PLAYING <> 0 then
ShowMessage('Sound card is playing sound now.');
end;

更新

我刚找到一个讨论 how to detect silence 的 VB 论坛(声卡无输出)。下载 DetSilence.zip .在 DXRecord_GotWavData Sub 中,将常量 SilencePercentNonSilencePercent 修改为您需要的值。

关于windows - 如何检测 Windows XP 机器上是否播放任何声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3983463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com