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