我们目前正在开发一款使用XNA的游戏,而且我们偶然发现了一些问题。检查系统是否有声音C#
当系统没有插入声音设备(扬声器等 - 当Win7在扬声器图标上显示红色十字)时,尝试播放/加载声音时会崩溃。
因此,我们想检查系统是否具有输出声音的能力。在C#中可能吗?
我们目前正在开发一款使用XNA的游戏,而且我们偶然发现了一些问题。检查系统是否有声音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.");
}
}
唯一代码的答案不倾向于是有益的。 – 2012-10-09 08:15:06
我的Windows 7系统上没有在winmm.dll中看到原始'GetNumDevs'。你的意思是[waveOutGetNumDevs](http://msdn.microsoft.com/en-us/library/windows/desktop/dd743860.aspx)?你真的是指'CharSet.Ansi'吗?这几乎总是不是最好的选择,而AFAICS无论如何都没有字符串。 – Rup 2012-10-09 08:44:20