Переключение аудиоустройства по умолчанию с помощью командного файла

22

Я пытаюсь написать командный файл в Windows 10, который позволяет мне переключаться между гарнитурой и динамиками в качестве аудиоустройства по умолчанию при его запуске. Я не хочу использовать стороннее программное обеспечение.

Я попытался искать, но нашел только старые скрипты, которые, кажется, не работают, а также ссылаются на HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Volume Control\путь, который, кажется, больше не существует. Я не могу найти какую-либо информацию в реестре Windows 10 об этом, также я не слишком доволен работой с реестром, если я не уверен в том, что я делаю.

zerothehero
источник
1
Если вы отказываетесь от нежелания использовать сторонние приложения, я использую audioswit.ch/er [да, это реальный URL] около 5 лет. Горячая клавиша переключается тоже. [Нет принадлежности.]
Tetsujin

Ответы:

33

Я ценю, что вы не хотите использовать какое-либо стороннее программное обеспечение, но в качестве опции, если вы не возражаете против использования ~ 100kb exe, вы можете использовать Nircmd с командами:

nircmd setdefaultsounddevice "Speakers" 1

или

nircmd setdefaultsounddevice "Headphones" 1

Вам необходимо убедиться, что вы используете точное название вашего аудиоустройства, как указано в разделе Playback Devices(щелкните правой кнопкой мыши на элементе управления звуком в системном трее). Может быть легче переименовать их под Propertiesболее простыми именами, особенно если имена конфликтуют каким-либо образом.

Знак 1в конце команды означает «Устройство по умолчанию». Использование 2означает «Устройство связи по умолчанию».


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

введите описание изображения здесь

Jonno
источник
+1 от меня. Это лучший способ пойти. Если вы действительно не хотите, чтобы nircmd был размещен где-то на вашем жестком диске (поверьте, вы хотите его, это здорово), тогда альтернативой было бы переключить его дважды и сделать reg-экспорт ключа, упомянутого здесь, и выполнить правильный .reg файл. Не уверен, что это сработает, но это мой альтернативный подход.
LPChip
Спасибо за ответ, я сам наткнулся на nircmd, но мне было очень любопытно найти способ сделать это без какого-либо стороннего программного обеспечения. Если не выйдет другой метод, я подумаю над его использованием.
Zerothehero
+1. Опробовал подход с реестром, но это не так просто, как было предложено (по крайней мере, с W10). Теперь и с NirCmd :)
MBaas
6

Начиная с Windows 8 (или, может быть, раньше?) Аудио конфигурация ПК сохраняется в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render. Под Renderними находятся GUID-именованные ключи, каждый из которых DeviceStateсодержит значение dword в корне. Но как это закодировано?

Смотрите DEVICE_STATE_XXX Константы на MSDN :

  • 1 активный
  • 2 Отключено
  • 4 нет
  • 8 отключен

Так что скрипт powershell / bat для переключения между 1 и 2 должен сделать свое дело.

РЕДАКТИРОВАТЬ: Чтобы получить удобочитаемое имя устройства, прочитайте {b3f8fa53-0004-438e-9003-51a46e139bfc},6в Propertiesподразделе

Азиз Кабышев
источник
Привет Азиз, я попробовал это под W10, но это работало только один раз - и когда я попытался переключиться на предыдущее устройство через пакет, он внезапно исчез из списка, который вы получаете, нажимая на иконку в трее для аудио. Также я обнаружил, что сначала мне нужно получить разрешения для этого ключа реестра (см. Groovypost.com/howto/… )
MBaas