Получить текущий уровень громкости [дублировать]

Single [] - это тесты условий, совместимые с командами, совместимыми с командами.

Двойной [[]] является расширением стандарта [] и поддерживаются bash и другими оболочками (например, zsh, ksh). Они поддерживают дополнительные операции (а также стандартные операции posix). Например: || вместо -o и соответствия регулярных выражений с =~. Более полный список различий можно найти в разделе bash manual по условным конструкциям .

Используйте [], когда вы хотите, чтобы ваш скрипт был переносимым через оболочки. Используйте [[]], если вы хотите, чтобы условные выражения не поддерживались [] и не нуждались в переносе.

35
задан Paedow 22 January 2016 в 13:41
поделиться

5 ответов

Вот код:

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Test
{
    public class Test
    {
        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;

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

        private void Mute()
        {
            SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
                (IntPtr)APPCOMMAND_VOLUME_MUTE);
        }

        private void VolDown()
        {
            SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
                (IntPtr)APPCOMMAND_VOLUME_DOWN);
        }

        private void VolUp()
        {
            SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle,
                (IntPtr)APPCOMMAND_VOLUME_UP);
        }
    }
}

Найден на dotnetcurry

При использовании WPF вам нужно использовать new WindowInteropHelper(this).Handle вместо this.Handle (спасибо Alex Beals)

46
ответ дан Paedow 24 August 2018 в 08:55
поделиться

Мой код немного отличается, но при использовании CoreAudio

загружен файл pkg: nuget AudioSwitcher.AudioApi.CoreAudio -Version 3.0.0.1

using AudioSwitcher.AudioApi.CoreAudio;
public partial class MainWindow : Window
{
public MainWindow()
{

InitializeComponent();

CoreAudioDevice defaultPlaybackDevice = new CoreAudioController().DefaultPlaybackDevice;

double vol = defaultPlaybackDevice.Volume;

defaultPlaybackDevice.Volume = defaultPlaybackDevice.Volume - 5.0;

defaultPlaybackDevice.Volume = defaultPlaybackDevice.Volume + 5.0;
}
}
0
ответ дан baruchno 24 August 2018 в 08:55
поделиться

Если учебные пособия, представленные в других ответах, слишком вовлечены, вы можете попробовать реализацию, подобную этой, используя функцию keybd_event

[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);

Использование:

keybd_event((byte)Keys.VolumeUp, 0, 0, 0); // increase volume
keybd_event((byte)Keys.VolumeDown, 0, 0, 0); // decrease volume
11
ответ дан Caster Troy 24 August 2018 в 08:55
поделиться

Если вы хотите установить его точное значение с помощью API Core Audio:

using CoreAudioApi;

public class SystemVolumeConfigurator
{
        private readonly MMDeviceEnumerator _deviceEnumerator = new MMDeviceEnumerator();
        private readonly MMDevice _playbackDevice;

        public SystemVolumeConfigurator()
        {
            _playbackDevice = _deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
        }

        public int GetVolume()
        {
            return (int)(_playbackDevice.AudioEndpointVolume.MasterVolumeLevelScalar * 100);
        }

        public void SetVolume(int volumeLevel)
        {
            if (volumeLevel < 0 || volumeLevel > 100)
                throw new ArgumentException("Volume must be between 0 and 100!");

            _playbackDevice.AudioEndpointVolume.MasterVolumeLevelScalar = volumeLevel / 100.0f;
        }
}
8
ответ дан egfconnor 24 August 2018 в 08:55
поделиться

Я немного опаздываю на вечеринку, но если вы смотрите сейчас, есть доступный пакет nuget (AudioSwitcher.AudioApi.CoreAudio), который упрощает аудио взаимодействия. Установите его, чтобы это было так просто:

CoreAudioDevice defaultPlaybackDevice = new CoreAudioController().DefaultPlaybackDevice;
Debug.WriteLine("Current Volume:" + defaultPlaybackDevice.Volume);
defaultPlaybackDevice.Volume = 80;
45
ответ дан Vman 24 August 2018 в 08:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: