从代码中静音系统

时间:2012-03-04 04:05:03

标签: c# audio windows-7 pinvoke volume

我正试图从我的C#控制台应用程序中静音PC扬声器。我已经尝试了建议on this site的代码,它不会影响我机器上的音量。我需要代码在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#静音PC?

3 个答案:

答案 0 :(得分:2)

我相信this正是您所寻找的。这已经在Windows 7中进行了测试,并且在SO before上也提出了这个问题。这可能会帮助你得到你想要的东西。

答案 1 :(得分:0)

您无法将PC扬声器静音。它是一个基本的设备,没有混音器等。它出来的是一个恒定的音量。

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

答案 2 :(得分:0)

您可以对AudioSwitcher库使用AudioSwitcher.AudioApi.CoreAudio扩展名。只需使用Package Manager Console将其安装为Nuget包:

Install-Package AudioSwitcher.AudioApi.CoreAudio

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

以下是一个例子:

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