根据代码将系统静音

本文关键字:系统 代码 | 更新日期: 2023-09-27 18:26:30

我正试图从C#控制台应用程序中将PC扬声器静音。我已经尝试了这个网站上建议的代码,它不会影响我机器上的音量。我需要在Win7上运行的代码,并且我认为该代码只能在XP上运行。我也试过这个:

[DllImport("winmm.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
public static extern int waveOutSetVolume(IntPtr uDeviceID, int dwVolume);
waveOutSetVolume(IntPtr.Zero, 0);

但是,当调用waveOutSetVolume方法时,系统不会静音,也不会引发错误。有没有办法在Win7中将电脑从C#静音?

根据代码将系统静音

您可以使用AudioSwitcher库的AudioSwitcher.AudioApi.CoreAudio扩展。只需使用package Manager控制台将其安装为Nuget包即可:

Install-Package AudioSwitcher.AudioApi.CoreAudio

它有一个类似MuteToggleMuteVolume属性的方法,因此您可以设置所需的值。

这里有一个例子:

using (var audio = new CoreAudioController())
{
    audio.DefaultPlaybackDevice.Volume = 50;
}

我相信这就是您想要的。这已经用windows7测试过了,这个问题以前也在SO上被问过。这可能会帮助你得到你想要的东西。

您无法将电脑扬声器静音。它是一个基本的设备,没有混合器等。它产生的是一个恒定的体积。

您在示例中显示的是控制声卡混音器的代码,这是一种完全不同的设备。