Смена аудио устройства по умолчанию одним кликом

  • 11.05.2019
  • 14 755
  • 23
  • 08.03.2024
  • 35
  • 33
  • 2
Смена аудио устройства по умолчанию одним кликом

Многие пользователи используют несколько устройств для вывода и записи звука - к компьютеру может быть одновременно подключены колонки, гарнитура, веб-камера и прочие устройства. Для смены звуковых устройств приходится каждый раз лезть в настройки звука, что может показаться утомительным занятием. К счастью, можно все это дело упростить до нажатия одной кнопки мыши, о чем и будет эта статья.

Используем утилиту NirCmd

Для этой цели будет использоваться программа NirCmd. Из всех огромных возможностей данной утилиты нам будет интересна только одна - возможность менять звуковые устройства по умолчанию через команду в командной строке. Скачиваем программу с её официального сайта, и распаковываем в удобное вам место (установка программы не требуется). В данной статье будет рассмотрен случай, если программа была распакована в директорию C:\Program Files\NirCmd.

Теперь, нужно зайти в настройки звука, и посмотреть устройства воспроизведения. В идеале их следует переименовать, чтобы не было путаницы, в дальнейшем их названия будут использоваться NirCmd для смены аудиоустройств. Как видно на скриншоте ниже, мною используются устройства "Massdrop O2 + SDAC" и "Sennheiser PC 350".

Для исключения проблем связанных с кодировкой, крайне рекомендуется использовать англоязычные названия аудио устройств!

Использование vbs скрипта

Для быстрой смены устройств через ярлыки, создадим два текстовых файла под каждое аудиоустройство, и сохраним их с расширениями .vbs:

Sennheiser PC 350.vbs

Set objShell = CreateObject("WScript.Shell")
objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""Sennheiser PC 350"" 1", 1, True
objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""Sennheiser PC 350"" 2", 1, True

Massdrop O2 + SDAC.vbs

Set objShell = CreateObject("WScript.Shell")
objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""Massdrop O2 + SDAC"" 1", 1, True
objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""Massdrop O2 + SDAC"" 2", 1, True

Добавляем смену аудиоустройств на панель задач

В принципе, уже все что нужно для смены звукового устройства одним кликом, сделано, но ничто не мешает добавить немножко красоты. Например, чтобы все это не выглядело однотипно, для данных файлов можно создать ярлыки, а уже у самого ярлыка сменить значок (иконку) - для этого достаточно открыть его свойства и нажать на кнопку "Сменить значок".

Если иконки, которые предоставляет Windows по умолчанию вас не устраивают, советую указать файл %systemroot%\system32\ddores.dll, который содержит в себе иконки различного оборудования, в том числе и аудио - наушники, колонки и т. д.

В итоге должно получиться как-то так:

Для еще более большего удобства можно вывести данные иконки на панель задач. Делается это следующим образом:

  1. Копируете эти ярлыки в отдельную папку. В выбранной папке не должно быть никаких прочих файлов, только ярлыки для смены аудио устройств!;
  2. На Панели задач нажимаете правой кнопкой, раскрываете пункт "Панели", там выбираете "Создать панель инструментов...".
  3. Выбираете ранее выделенную папку под ярлыки.
  4. На Панели задач появится название выбранной папки. Нажимаем правой кнопкой по Панели задач, убираем галочку у пункта "Закрепить панель задач".
  5. Теперь нажимаем правой кнопкой по названию папки в Панели задач. Снимаем галочки у пунктов "Показывать подписи" и "Показывать заголовок". Так же, в пункте "Вид", выбираем "Крупные значки".
  6. Теперь двигая выделенную пунктиром границу свежесозданной панели, добиваемся того, чтобы на ней поместились все значки. По завершению регулирования ширины, следует вернуть галочку пункту "Закрепить панель задач". В итоге должно получится следующее:
Была ли эта статья Вам полезна?

Комментарии к статье (23)

    • Жень

    Я раньше так и делал, пока не нашёл вариант проще, лехче и удобнее - PlaybackDevice! Это до смешного простая утилитка, тоже естественно не требуется никаких установок, 2 значка наушники и динамики уже вшиты

    • Алекс

    Ничего не понятно текстовые файлы так и остаются текстовыми файлами... Куда чего там вписывать не понятно...
    Сделал все сразу через ярлык с командой в нем и все!
    Внимание впорос МОЖНО ли на один ярлык сделать чтобы сразу менял и наушники и микрофон?!?

    • Ответ на вопрос - нет, через один ярлык для программы не получится, отсюда и надобность создавать vbs файл.
      Если не получилось создать его, попробуйте прочитать инструкцию в этом материале.

    • Сергей

    objShell = CreateObject("WScript.Shell")
    objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""U32J59x"" 1", 1, True
    objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""U32J59x"" 2", 1, True

    • В первой строке должно быть

      Set objShell = CreateObject("WScript.Shell")
        • Сергей

        Спасибо!
        Слона то я и не заметил :) Хотя во втором скрипте все правильно.
        Вообщем, на монитор скрипт переключает отлично, а вот на наушники пока не победил.

        Вот скрипт:
        Set objShell = CreateObject("WScript.Shell")
        objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""Наушники"" 1", 1, True
        objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""Наушники"" 2", 1, True

        Устройство так и называется - Наушники.
        https://cloud.mail.ru/public/8svR/QtMQRRxKP

        • Сергей

        Победил. Переименовал на Sony.

        • Судя по всему, проблема была с русскими символами в имени устройства. Как вариант - проверить, что файл VBScript сохранен в кодировке CP1251.

            • Сергей

            Да, проблема была с русскими символами, не знал, что можно переименовать устройство. Теперь все работает отлично, ну.... кроме панелей инструментов в Win 11 )

    • Сергей

    Win 11
    Ошибка: Объект не поддерживает это свойство или метод: `objShell`
    Код: 800A01B6
    Источник: Ошибка выполнения Microsoft VBScript
    Как побороть?

    • tim

    Автор, спасибо, помогло, но есть ли возможность манипулировать громкостью именно микрофона, а не устройств выхода? т.е. у меня 2 микрофона. 1й микрофон включён на максимальной громкости, я переключаю на 2й микрофон для каких то дел или удобства. Хочу переключить обратно на 1, но с условием, что должна быть не максимальная громкость, а условные n%. Это возможно через nircmd?

    • В NirCmd нет возможности регулировать громкость, но эта возможность есть в другой программе этого же автора - SoundVolumeView.

    • NaViGaToR

    А как будет выглядеть подобная команда, но для устройства ввода (микрофон)?

    • Абсолютно так же, как и в случае с устройствами вывода.

      • Павел

      Не могу понять как сделать так, чтобы менялся микрофон с одного на другой, без изменения наушников. В комментах вижу, что там одинаковая команда, но можно поподробней объяснить, не понимаю как это написать чтобы работало, почему-то не изменяется микро после нажатия на ярлык

      • В данном случае, нужно, чтобы у ваших микрофонов были уникальное имя в настройках звукозаписывающих устройств (в том числе, отличающиеся от тех имен устройств, которые есть в устройствах воспроизведения) - например, пусть это будут "Microphone 1" и "Microphone 2". Тогда, файлы для переключения этих микрофонов будут следующие:

        Для первого микрофона:

        Set objShell = CreateObject("WScript.Shell")
        objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""Microphone 1"" 1", 1, True
        objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""Microphone 1"" 2", 1, True

        Для второго микрофона:

        Set objShell = CreateObject("WScript.Shell")
        objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""Microphone 2"" 1", 1, True
        objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""Microphone 2"" 2", 1, True
    • breez

    Опечатка в исполнительном пути к NirCmd:
    "В данной статье будет рассмотрен случай, если программа была распакована в директорию C:\NirCmd."
    В самом скрипте:
    "objShell.Run """C:\Program Files\NirCmd\nircmd.exe"" setdefaultsounddevice ""Sennheiser PC 350"" 1", 1, True"

    • Сергей

    Большая благодарность автору данной статьи!

    • Артур

    Спасибо, полезная утилита!

    • Аноним

    Для windows 10 не работает данная тема.
    С оф. сайта NirCmd:
    Added setdefaultsounddevice command (for Windows 7/Vista/2008 only), which allows you to set the default sound device.

      • Recluse

      Пользовался этим способом на Windows 8.1, и сейчас на Windows 10.

      Судя по всему, это примечание о совместимых ОС осталось от чейнжлога из 2011 года - подразумевающая, что это не будет работать в операционных системах ниже Vista/7/Server 2008 (а более новых тогда и не было).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.