Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#获取主音量/进阶_C#_.net - Fatal编程技术网

C#获取主音量/进阶

C#获取主音量/进阶,c#,.net,C#,.net,我用这个代码来静音/取消静音主音量 private const int APPCOMMAND_VOLUME_MUTE = 0x80000; private const int WM_APPCOMMAND = 0x319; [DllImport("user32.dll")] public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); SendMessageW(this

我用这个代码来静音/取消静音主音量

private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
private const int WM_APPCOMMAND = 0x319;

[DllImport("user32.dll")]
public static extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);

SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_MUTE);
我想知道如何获得主音量/进音,因为我想知道声音是否已经静音

编辑: 或者我想分割静音/取消静音声音,这样我将有两个功能-一个用于静音,一个用于取消静音

谢谢

演示如何从C#控制主音量

您可能还对这个问题的回答感兴趣:


尤其是托管包装器。

看看这个项目

他们创建了自己的混音器控件,该控件还报告当前音量和静音/取消静音状态:

defaultDevice.AudioEndpointVolume.OnVolumeNotification += new AudioEndpointVolumeNotificationDelegate(
    AudioEndpointVolume_OnVolumeNotification);
// .. snip ..
void AudioEndpointVolume_OnVolumeNotification(AudioVolumeNotificationData data)
{
    Console.WriteLine("New Volume {0}", data.MasterVolume);
    Console.WriteLine("Muted      {0}", data.Muted);
}
这对你有帮助吗

编辑:使用此代码和项目中的类,您应该能够直接设置和取消设置静音(无需切换):


我无法对所有Windows版本(xp、vista和7)都执行此操作。
尽管如此,我还是通过使用外部程序实现了它,例如,并发送了所需的命令


不是很好的解决方案,但它确实解决了我的问题。

具体来说,有什么不起作用?线程中的注释表明它可以工作。使用函数GetVolume()并返回65535,在我更改卷后,它返回相同的值-65535。也许我使用了错误的函数?另一个问题是关于当前播放声音的强度,而不是混音器中当前设置的增益。我仍在寻找答案。Jim给出的所有线程都不起作用。CodeProject链接是死的。这非常有效。请注意,您需要使用以下命名空间引用NAudio.dll:使用NAudio.CoreAudioApi;。MasterVolumeLevel Scalar是线性0-1比例,而MasterVolumeLevel是一些非线性比例。
MMDeviceEnumerator devEnum = new MMDeviceEnumerator();
MMDevice defaultDevice = devEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
defaultDevice.AudioEndpointVolume.Mute = true; // or false