【问题标题】:SystemSounds Play not workingSystemSounds 播放不工作
【发布时间】:2008-12-05 13:14:34
【问题描述】:

我正在尝试使用 C# 程序播放 Asterisk 系统声音

System.Media.SystemSounds.Asterisk.Play();

但没有声音播放。我的系统确实为 Asterisk 设置了声音,而其他程序(不是我编写的)会导致播放各种系统声音。

谁能提出任何可能的原因?

【问题讨论】:

  • 是否有任何其他系统声音可以通过修改此代码来工作?例如。使用感叹号代替星号。
  • 扬声器是否设置为静音? ;)

标签: c# audio


【解决方案1】:

直到今天我都忽略了这个问题。一些谷歌搜索显示这是一个很常见的问题,与 .NET Play 调用完全无关。

发生的情况是,虽然您可以从控制面板声音和音频设备小程序播放/预览声音,但当程序触发声音时,它们不会播放。这似乎是由程序安装引起的损坏。修复很简单。

注册表中 HKEY_CURRENT_USER 的(默认)条目应为(未设置值)。如果是其他内容(我的是 OfficeCompleted),请删除该条目(右键单击并选择删除)并将其重新创建为(未设置值)。然后应该播放系统声音。

【讨论】:

    【解决方案2】:

    对不起,如果这夸大了显而易见的......

    1. 您确定这行代码正在执行吗?
    2. 正如 RobS 所建议的那样,其他 SystemSounds 可以播放吗?

    我看了反光板。无论您调用哪个 SystemSound,都会返回一个使用您要播放的系统声音的类型(例如 Asterix 的 0x40)初始化的 SystemSound 实例。然后将其传递给 Win32 bool MessageBeep( int type ) 方法。导入为:

    [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
    internal static extern bool MessageBeep(int type);
    

    bool 返回不会以任何方式保留 - 即您无法获得它:(

    异常不会被吞没,所以如果抛出,你应该得到任何。

    希望对您有所帮助(尽管可能只是告诉您您已经知道的)

    【讨论】:

    【解决方案3】:

    我只迟到了 8 年,但我只是在 Windows 7 平板电脑上遇到了这个问题。修复它的东西?经典Restart

    尝试重启设备。

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 2016-02-22
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多