我们目前正在使用XNA开发游戏,但遇到了一些声音问题。
当系统没有插入音频设备(扬声器等--当Win7显示扬声器图标上有一个红叉)时,在尝试播放/加载声音时会崩溃。
因此,我们希望检查系统是否具备输出声音的能力。在C#中是否可能实现呢?
当系统没有插入音频设备(扬声器等--当Win7显示扬声器图标上有一个红叉)时,在尝试播放/加载声音时会崩溃。
因此,我们希望检查系统是否具备输出声音的能力。在C#中是否可能实现呢?
您确定它实际上崩溃了,而不是仅仅抛出一个未处理的异常吗?
理论上它应该会抛出一个NoAudioHardwareException
。
尝试使用音频做一些事情(例如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.");
}
}