SystemSounds播放不起作用

时间:2008-12-05 13:14:34

标签: c# audio

我正在尝试使用

从C#程序播放Asterisk系统声音
System.Media.SystemSounds.Asterisk.Play();

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

有人可以提出任何可能的原因吗?

3 个答案:

答案 0 :(得分:5)

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

当您可以播放/预览来自“控制面板声音和音频设备”小程序的声音时,它们会在程序触发声音时播放。它似乎是由程序安装引起的腐败。修复非常简单。

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

答案 1 :(得分:1)

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

  1. 您确定这行代码正在执行吗?
  2. RobS建议做其他任何SystemSounds游戏吗?
  3. 我看了一下反射器。无论您调用哪个SystemSounds都会返回一个SystemSound实例,该实例使用类型(例如,Asterix为0x40)初始化,以便播放您想要播放的系统声音。然后将其传递给Win32 bool MessageBeep(int类型)方法。导入为:

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

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

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

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

答案 2 :(得分:1)

我参加晚会只有8年,但我在Windows 7平板电脑上遇到了这个问题。解决它的事情是什么?经典Restart

尝试重启设备。