Настройка устройства воспроизведения путем выполнения пакетного файла / сценария powershell
У меня есть компьютер (Windows 7), подключенный к телевизору, и я очень часто меняю устройство вывода звука между цифровым аудио(S/PDIF) (аудиоустройство высокой четкости) и моей гарнитурой (2 - Corsair CA-HS1 USB-гарнитура)
Я хочу иметь возможность выполнить пакет / файл сценария, который изменяет это для меня, поэтому мне не нужно "щелкнуть правой кнопкой мыши громкость > устройства воспроизведения >" отметить устройство вывода " и нажмите "Установить по умолчанию".
Я знаю, что это проблема роскоши, но эй, может быть, я могу узнать что-то от кого-то?
вся помощь приветствуется!
7 ответов
У меня было то же самое требование, что и у вас, и, наткнувшись на ваше сообщение, я нашел следующее:
к сожалению, это не собственная функция Windows; она требует загрузки небольшого скриптового инструмента с открытым исходным кодом под названием AutoHotKey, но он работает хорошо и требует только небольшой объем памяти (1 ~ 2,5 Мб)
сценарий указана в оригинальной статье не работает для меня. Он ищет включенные / отключенные устройства и изменяет это значение, в отличие от изменения устройства по умолчанию. Я отредактировал его, чтобы переключаться между 2 устройствами по умолчанию. Он работает, открывая панель управления звуком (mmsys.cpl), затем прокрутите список устройств воспроизведения до второго элемента в списке (это часть {Down 2}). Это потому, что мои колонки второй пункт в моем списке. Затем он проверяет, является ли устройство по умолчанию или нет. Если нет, то устанавливает его по умолчанию и закрывает окно. Если это уже значение по умолчанию, оно прокручивается еще 2 раза и устанавливает это значение по умолчанию.
Итак, вам нужно будет добавить строки {Down 2}, чтобы соответствовать вашему собственному списку устройств.
#+a::
Run, mmsys.cpl
WinWait,Sound
ControlSend,SysListView321,{Down 2}
ControlGet, selectedDevice, List, Focused, SysListView321
Loop, Parse, selectedDevice, %A_Tab%
if a_index <> 3
continue
else
{
if A_LoopField <> Default Device
{
ControlClick,&Set Default
ControlClick,OK
WinWaitClose
SoundPlay, *-1
return
}
else
{
ControlSend,SysListView321,{Down 2}
ControlClick,&Set Default
ControlClick,OK
WinWaitClose
SoundPlay, *-1
return
}
}
Это, как я 'Линия 1', как устройство воспроизведения:
start /min "" G:\......\nircmd.exe setdefaultsounddevice "Line 1"
NirCmd - это небольшая утилита командной строки, которую вы можете скачать, что позволяет сделать некоторые полезные задачи без отображения пользовательского интерфейса.
выполнить Дейл Ньютона пост NirCmd - это отличный способ сделать это. Кроме того, если вы соедините его с AutoHotKey вы можете создать исполняемый файл, который будет изменять ваши устройства, не открывая надоедливые CMD окна каждый раз, когда вы запустите его. Например, у меня есть два источника, которые я переключаю между все время, один-мои наушники, а другой-мой монитор. Для моего монитора я создал скрипт ahk, который делает следующее:
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir% ;I have nircmd in the same folder as these scripts
Run, nircmd setdefaultsounddevice "Acer X34-8" 1
Run, nircmd setdefaultsounddevice "Acer X34-8" 2
и другой для моих наушников с последними двумя строками изменен на:
Run, nircmd setdefaultsounddevice "Headset Earphone" 1
Run, nircmd setdefaultsounddevice "Headset Earphone" 2
после этого вы можете скомпилировать каждый сценарий ahk в exe и привязать каждый exe к макро клавиатуры, чтобы вы могли выполнить их с помощью нескольких нажатий клавиш. Лично я использую Corsair K95, поэтому я использую их программное обеспечение для привязки их к моим ключам "G".
Также обратите внимание, если вы в настройках звука вы можете переименовать любое из устройств, чтобы избежать конфликтов имен.
следующий сценарий написан в Windows 7 и использует клавиши sendkeys. Он основан на других фрагментах, которые я нашел, но добавляет к ним, чтобы убедиться, что выбор согласован, а случайные окна не отображаются. Вы можете настроить время сна для своей системы, если она все еще играет. Вызовите скрипт, используя ярлык с индексом элемента, который вы хотите выбрать в окне устройства воспроизведения в качестве первого параметра. Вы можете создать новую "панель инструментов" на "панели задач", чтобы выбрать каждое устройство с одним щелчок: панель задач панель инструментов изображение
'===============================================================================
'This script uses sendkeys to select the Sound Output device
'First parameter should be the desired device number in 'Playback Devices' list
'===============================================================================
Option Explicit
Const SleepTime = 200
Dim WindSh
'===============================================================================
'MAIN ROTUINE
'===============================================================================
'Check the command line input
if ( Wscript.Arguments.Count <> 1) then
MsgBox "You must provide a single integer arguement representing the device number", vbinformation + vbokonly, Wscript.ScriptName
Wscript.Quit 1
elseif ( false = IsNumeric( Wscript.Arguments.Item(0) ) ) then
MsgBox "The arguement provided was not an integer number: " & Wscript.Arguments.Item(0), vbinformation + vbokonly, Wscript.ScriptName
Wscript.Quit 2
End If
set WindSh = CreateObject("Wscript.Shell")
WindSh.run("control.exe mmsys.cpl")
do while (WindSh.AppActivate("Sound") = false)
WScript.Sleep SleepTime
loop
WindSh.sendkeys("{DOWN " & Clng( Wscript.Arguments.Item(0) ) & "}")
WScript.Sleep SleepTime
WindSh.sendkeys("{TAB 2}")
WScript.Sleep SleepTime
WindSh.sendkeys("{ENTER}")
WScript.Sleep SleepTime
WindSh.sendkeys("%{F4}")
WScript.Sleep SleepTime
if (WindSh.AppActivate("Sound") = true) then
WindSh.sendkeys("%{F4}")
end if
может быть не связано с переключением аудиоустройства через скрипт, но у меня также есть компьютер, подключенный к телевизору через HDMI.
когда я хочу смотреть видеофайлы на телевизоре, я использую Media Player Classic Home Cinema - это позволяет мне указать аудиоустройство для MPH: HC в параметрах без переключения моего звукового устройства по умолчанию на всем компьютере.
Если ваше использование похоже на мое, возможно, MPC: HC решит вашу проблему для вас.
обратите внимание, что если вы используете "NirCmd setdefaultsounddevice speakers" в сценарии входа в корпоративную или образовательную среду, звук все равно будет выходить из динамиков при подключении наушников.