加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-13 20:31:35 所属栏目:Windows 来源:网络整理
导读:是否有可能检测到Windows XP机器上是否有声音?任何语言的帮助都会很有用.我基本上需要编写一个一直运行的程序,并在播放声音时将一些文本输出到文件中.我不需要任何关于声音的具体信息,只需要播放声音.我不关心扬声器是否真的开机或类似的东西. 问题很简单,
是否有可能检测到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;

UPDATE

我刚刚发现一个关于how to detect silence的VB论坛(没有输出声卡).下载DetSilence.zip.在DXRecord_GotWavData Sub中,将常量SilencePercent和NonSilencePercent修改为您需要的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读