检查系统是否有声音 C#

7
我们目前正在使用XNA开发游戏,但遇到了一些声音问题。
当系统没有插入音频设备(扬声器等--当Win7显示扬声器图标上有一个红叉)时,在尝试播放/加载声音时会崩溃。
因此,我们希望检查系统是否具备输出声音的能力。在C#中是否可能实现呢?
2个回答

6

您确定它实际上崩溃了,而不是仅仅抛出一个未处理的异常吗?

理论上它应该会抛出一个NoAudioHardwareException

尝试使用音频做一些事情(例如SoundEffect.MasterVolume,因为它是一个静态方法),看看是否可以捕获异常。如果您捕获到异常,只需停止进行任何其他音频工作即可。


0

我认为这会有所帮助……

[DllImport("winmm.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern long GetNumDevs();
private void Button1_Click(System.Object sender, System.EventArgs e)
{
    long I = 0;
    I = GetNumDevs();
    if (I > 0) {
        Interaction.MsgBox("Your system can play sound files.");
    } else {
        Interaction.MsgBox("Your system can not play sound files.");
    }
}

只提供代码而没有任何解释的答案通常并不会有帮助。 - Andrew Barber
我在我的Windows 7系统中没有看到winmm.dll中的原始“GetNumDevs”。你是不是指的waveOutGetNumDevs?而且你真的是指“CharSet.Ansi”吗?那几乎总是不是最好的选择,而且在这里也没有字符串。 - Rup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接