Upd: English version of the article: Fast switching playback devices using AutoIt.


Не так давно прикупил bluetooth stereo headset (Motorola S9-HD кстати, вот он:

Площадка Ogri - ogri.me | Bluetooth stereo headset Motorola S9-HD

Классный саунд, встроенный микрофон. Очень доволен, рекомендую). Спарил с ноутом, слушаю через него кино (не группу, а звук от фильмов, хотя и ее иногда тоже). Старые проводные наушники тоже иногда подключаю, например, когда по рассеянности вовремя не зарядил батарею новых. Процесс переключения устройств воспроизведения не такой уж и трудоемкий: правый клик на иконке-динамике в трее -> выбор пункта Устройства воспроизведения (Playback devices) -> в открывшемся окне Звук (Sound) во вкладке Воспроизведение (Playback) клик на соответствующее устройство и затем на кнопку По умолчанию (Set Default). Но все-таки эту последовательность действий каждый раз выполнять было лениво и захотелось автоматизировать как-нибудь по-легкому.

Для этой цели отлично подошла утилита AutoIt (ее можно скачать бесплатно с офсайта). В сети нашелся соответствующий скрипт, вот он:

 ;-----Configuration----- ;The title of the sound config window. Dim $ConfigWindowTitle = "Sound" ;-----End of configuration---- Dim $ItemNumber = 1 If $CmdLine[0] >= 1 Then ;If we have a parameter... $ItemNumber = $CmdLine[1] ;...we should press the button the specified number of times. EndIf Run("control mmsys.cpl") ;Run the sound control applet and hide it. WinWaitActive($ConfigWindowTitle) ;Wait for it to be active before sending keystrokes. Send("{TAB}{TAB}{TAB}{TAB}") ;Put the focus on the list For $i = 1 to $ItemNumber Step 1 Send("{DOWN}") Next Send("!s") ;Press Alt + S to set the selected device as the default. WinClose($ConfigWindowTitle)

Копируем код в текстовый файл и сохраняем с расширением .au3. Например, toggle-playback.au3. Поместим его в папку скриптов AutoIt3, я использовал уже имеющуюся папку Examples. Затем открываем окно Звук (Sound) как описано выше. Мое выглядит так:

Площадка Ogri - ogri.me | Диалог Sound -> Playback

Меня интересуют первые два устройства. Bluetooth Audio Device - это та самая гарнитура, номер 1 в списке. Номер 2 - встроенные динамики и выход аудиокарты. Номера понадобятся для дальнейшей настройки - запомнили их.

Далее возможно два альтернативных варианта.

1. Создаем два (или больше - по количеству переключаемых устройств) текстовых файла с расширением, типичным для командных файлов консоли - .cmd или .bat. Назовем их, к примеру, Bluetooth.cmd и Speakers.cmd. Открываем их на редактирование и набиваем следующий код.

Файл Bluetooth.cmd:

echo off
D:\Common\AutoIt3\AutoIt3_x64.exe D:\Common\AutoIt3\Examples\toggle-playback.au3 1

D:\Common в моем случае - путь к папке AutoIt3. Понятно, что каждый заменяет его на свой. Также я использую 64-битный вариант AutoIt, обладатели 32-битной системы заменяют AutoIt3_x64.exe на AutoIt3.exe. Сама же команда, как ясно, использует два параметра. Первый - файл скрипта (включая полный путь), второй же - порядковый номер включаемого устройства воспроизведения в списке, выясненный нами ранее.

Аналогично, файл Speakers.cmd будет содержать точно такой же код, только значение второго параметра будет 2:

echo off
D:\Common\AutoIt3\AutoIt3_x64.exe D:\Common\AutoIt3\Examples\toggle-playback.au3 2

Теперь запуск каждого командного файла будет активировать соответствующее устройство воспроизведения.

2. В папке Aut2Exe имеется одноименная утилита для компиляции .au3 файлов со скриптами в исполняемый файл. Она крайне проста и понятна в использовании. Выбирается исходный файл скрипта, путь и имя exe-ковского файла, опционально - пиктограмма и битность:

Площадка Ogri - ogri.me | Окно программы Aut2Exe

Жмем кнопку Convert. Получаем файл TogglePlayback.exe в субфолдере Examples.

Теперь, как и в первом варианте, создаем два командных файла Bluetooth.cmd и Speakers.cmd. Поскольку как функциональность самого AutoIt, так и скрипт уже зашиты в TogglePlayback.exe, достаточно запускать его с единственным параметром - номером устройства. Содержимое Bluetooth.cmd будет таким:

echo off
D:\Common\AutoIt3\Examples\TogglePlayback.exe 1

Speakers.cmd, соответственно -

echo off
D:\Common\AutoIt3\Examples\TogglePlayback.exe 2

Вот и все. Наслаждаемся возможностью перебрасывать звук между устройствами воспроизведения за один клик.

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

Комментарии  

Евгений
0 # Евгений 11.11.2013 12:19
Спасибо! очень помог... Может и я помогу кому-то)

В моем случае (русскоязычная винда) нужно было писать так в начале:

Dim $ConfigWindowTitle = "Звук"

Четыре пробела необязательными оказались. Я вообще убрал эту строку, хотя можно было и оставить!

А сочетание клавиш Send("!s") у меня почему-то не заработало. Пришлось городить вот такую конструкцию (частный случай):

; Вызов контекстного меню и выбор пункта "использовать по умолчанию"
Send("{APPSKEY}")
Send("{DOWN}")
Send("{DOWN}")
Send("{DOWN}")
Send("{ENTER}")
Ответить | Ответить с цитатой | Цитировать
Ogri
0 # Ogri 11.11.2013 23:11
Спасибо, Евгений, за ценный комментарий!

Dim $ConfigWindowTitle = "Звук" - истинная правда. Поскольку всегда работал с английскими виндами - не учел. Вношу в текст статьи.

Четыре пробела - вы, видимо, имели в виду табуляцию. Попробовал закомментировать строку - действительно, работает и без них. Но убирать не буду: кто знает, возможно, в определенных условиях это важно. Пока же - не мешает.

А вот Send("!s") у вас не заработало опять-таки по причине русского языка интерфейса. Вам нужно заменить на Send("!ч"). Также добавляю в текст.

Еще раз спасибо, что обратили внимание на не охваченный в статье случай и помогли дополнить. Вебдваноль в действии! ))
Ответить | Ответить с цитатой | Цитировать

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