LorisYounger / VPet

虚拟桌宠模拟器 一个开源的桌宠软件, 可以内置到任何WPF应用程序
Apache License 2.0
4.64k stars 465 forks source link

windows系统下, 当windows系统无声音输出设备时, 闪退 #341

Closed FairyOwO closed 3 months ago

FairyOwO commented 3 months ago

windows系统下, 当windows系统无声音输出设备时, 闪退/工作不计时 代码位置在 MainWindows.cs:1038

public float AudioPlayingVolume()
{
    using (var enumerator = new MMDeviceEnumerator())
    {
        var device = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);  // 这一行会报错
        return device.AudioMeterInformation.MasterPeakValue;
    }
}

可能的修复方案, 检查windows声音输出设备, 若无, 直接返回0

public float AudioPlayingVolume()
{
    using (var enumerator = new MMDeviceEnumerator())
    {
        if (enumerator.HasDefaultAudioEndpoint(DataFlow.Render, Role.Console))
        {
            var device = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);
            return device.AudioMeterInformation.MasterPeakValue;
        }
        return 0;
    }
}

c#并不是我主要的语言, 写的差请见谅