c#中的音量控制。如何为卷分配值?

问题描述 投票:1回答:1

在我的程序中,我可以使用系统变量来增加和减少音量,例如

    private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
    private const int APPCOMMAND_VOLUME_UP = 0xA0000;
    private const int APPCOMMAND_VOLUME_DOWN = 0x90000;
    private const int WM_APPCOMMAND = 0x319;

但是有一个系统变量可以让我为其分配一个值。例如,将音量设置为57,而不是增大或减小以达到该值。

最终要做的是使用轨迹栏来调节音量。在任一方向上拖动时,跟踪栏应等于系统音量,以便相应地更改音量。

c# volume
1个回答
0
投票

您可以使用NuGet包AudioSwitcher.AudioApi.CoreAudio在那里回答:How to programmatically set the system volume?

通过验证码:

CoreAudioDevice defaultPlaybackDevice = new CoreAudioController().DefaultPlaybackDevice;
Debug.WriteLine("Current Volume:" + defaultPlaybackDevice.Volume);
defaultPlaybackDevice.Volume = 80;

注意:如果设备静音但不会取消静音,则会在默认播放设备上将音量设置在[0; 100]范围内,因此如果要取消静音,则应呼叫:

defaultPlaybackDevice.Mute(false);

出于您的目的,它还提供事件VolumeChanged和MuteChanged来跟踪内部音量变化。

内部使用Core Audio API,它是Windows Vista启动提供的基于COM的低级音频控制API。

如果您想编写自己的包装器来执行此操作,则应该看到IAudioEndpointVolume接口(https://docs.microsoft.com/en-us/windows/win32/api/endpointvolume/nn-endpointvolume-iaudioendpointvolume

内部音量通知实现为结构AUDIO_VOLUME_NOTIFICATION_DATA(https://docs.microsoft.com/en-us/windows/win32/api/endpointvolume/ns-endpointvolume-audio_volume_notification_data)中提供的信息中的回调

© www.soinside.com 2019 - 2024. All rights reserved.