Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查系统是否有声音C#_C#_Xna_Audio - Fatal编程技术网

检查系统是否有声音C#

检查系统是否有声音C#,c#,xna,audio,C#,Xna,Audio,我们目前正在开发一款使用XNA的游戏,我们偶然发现了一个小的声音问题 当系统没有插入声音设备时(扬声器等,Win7在扬声器图标上显示红十字时),它在尝试播放/加载声音时崩溃 因此,我们想检查系统是否具有输出声音的能力。在C#中是否可能?您确定它实际上正在崩溃,而不是简单地抛出一个未处理的异常吗 理论上,它应该抛出一个noaudiohardwareeexception 尝试使用音频(SoundEffect.MasterVolume作为一种可能性出现在脑海中,因为它是一种静态方法),看看是否可以捕获

我们目前正在开发一款使用XNA的游戏,我们偶然发现了一个小的声音问题

当系统没有插入声音设备时(扬声器等,Win7在扬声器图标上显示红十字时),它在尝试播放/加载声音时崩溃


因此,我们想检查系统是否具有输出声音的能力。在C#中是否可能?

您确定它实际上正在崩溃,而不是简单地抛出一个未处理的异常吗

理论上,它应该抛出一个
noaudiohardwareeexception


尝试使用音频(
SoundEffect.MasterVolume
作为一种可能性出现在脑海中,因为它是一种静态方法),看看是否可以捕获异常。如果你发现了一个异常,只需不做进一步的音频工作。

我认为这将有助于

[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.");
    }
}

只回答代码而不做任何解释是没有任何帮助的。在我的Windows 7系统的winmm.dll中,我没有看到原始的GetNumDevs。你是说?你真的是指
CharSet.Ansi
??这几乎总是不是最好的选择,而且这里没有任何条件。