Windows MessageBeep不播放任何声音

Windows MessageBeep不播放任何声音,windows,winapi,Windows,Winapi,我试图使用API播放声音,但没有声音播放 MessageBeep(MB_ICONINFORMATION); MessageBeep(MB_ICONASTERISK); MessageBeep(MB_ICONEXCLAMATION); MessageBeep(MB_ICONERROR); MessageBeep(MB_ICONHAND); MessageBeep(MB_ICONINFORMATION); MessageBeep(MB_ICONQUESTION); MessageBeep(MB_IC

我试图使用API播放声音,但没有声音播放

MessageBeep(MB_ICONINFORMATION);
MessageBeep(MB_ICONASTERISK);
MessageBeep(MB_ICONEXCLAMATION);
MessageBeep(MB_ICONERROR);
MessageBeep(MB_ICONHAND);
MessageBeep(MB_ICONINFORMATION);
MessageBeep(MB_ICONQUESTION);
MessageBeep(MB_ICONSTOP);
MessageBeep(MB_ICONWARNING);
MessageBeep(MB_OK);
  • 是的,我插上了扬声器
  • 是的,音量调大了
  • 是,我听到其他信息蜂鸣(UAC、默认、错误等)
  • 是,我听到来自其他应用程序的音频()
  • Windows 10.0.14393 64位
  • 交互连接(即不通过终端服务远程桌面会话)
  • 函数(返回
    BOOL
    )返回
    true

  • 是,在控制面板的声音小程序中设置了“默认”声音

  • Beep服务已启动(尽管
    Beep
    功能与此无关)
  • 不允许应用程序独占控制我的默认(也是唯一)声音设备:

  • Windows不尝试播放任何声音;在混音器中看不到“输出电平”:

我错过了什么

重现问题的示例代码 测试日期:

  • Windows 10 64位
  • Windows 7 64位
  • Windows 7 64位

  • 德尔菲5

  • 德尔福7

  • 德尔福XE6

另见
  • ()
额外阅读
  • Windows
    Beep
    功能从Windows 7开始重新设计,不再使用PC扬声器,现在使用默认的声音设备


    • 我现在已经解决了这个问题 第一步:单击扬声器图标上的任务栏 进入选项,您必须调整系统声音。 截图是在Windows7 Family prenium法语版上拍摄的,但在最新版本中可能几乎相同


      它是否适用于非控制台应用程序?只是好奇。我还没有试过你的代码示例。它不是很正常的代码。它在几微秒内完成这些MessageBeep()调用并终止程序。没有声音。睡一会儿听点什么。@ZamronyP.Juhara它不适用于任何应用程序。我发现在GUI按钮点击时没有声音。人们都被这个例子分心了——这也不起作用。我已经删除了我的答案。我无法重现这个问题,无论是您的控制台还是GUI示例。您确定问题出在MessageBeep而不是您的声音配置本身吗?您是否从其他应用程序(如资源管理器)获取声音?(顺便说一句,你应该看看MessageBeep的文档;它接受你传递给它的大约一半的常量,其中一些是多余的,因为它们是同义词。我会删除除$FFFFFF之外的所有调用;如果它起作用,其他的会。)@KenWhite我收到UAC、默认、UAC插入和删除声音。我想那一定是我的电脑;但我在两台同事的机器上试过。他们的机器也完全可能处于不受支持的硬件配置中:我们都可以听到声音,我们都可以听到其他标准的通知声音,但MessageBeep不起作用。
      procedure TForm4.Button1Click(Sender: TObject);
      begin
          MessageBox(0, 'About to play sounds', 'TestApp', MB_OK);
      
           MessageBeep(MB_ICONINFORMATION);
           MessageBeep(MB_ICONASTERISK);
           MessageBeep(MB_ICONEXCLAMATION);
           MessageBeep(MB_ICONERROR);
           MessageBeep(MB_ICONHAND);
           MessageBeep(MB_ICONINFORMATION);
           MessageBeep(MB_ICONQUESTION);
           MessageBeep(MB_ICONSTOP);
           MessageBeep(MB_ICONWARNING);
           MessageBeep(MB_OK);
           MessageBeep($ffffffff);
          MessageBox(0, 'After playing sounds', 'TestApp', MB_OK);
      end;