Страница 1 из 1

Звук компьютера

Добавлено: 08 фев 2015, 00:03
Sergey Ivanov
Подскажите, как поменять громкость через :labview: ? И возможно ли это вообще ?


Нашёл это, но появляется только окно с регулировкой уровня звука.

Re: Звук компьютера

Добавлено: 08 фев 2015, 15:10
dadreamer
А это не подходит? Есть ещё вот такая ссылка.

Re: Звук компьютера

Добавлено: 08 фев 2015, 16:54
Sergey Ivanov
по первой ссылке пробовал способ. не работает, точнее я не понимаю от куда узнать device ID.

мне громкость надо менять у системы. допустим, воспроизвожу звук через колонки из плеера или сайта и мне через :labview: надо изменить звук.
111222334445.png
111222334445.png (9.12 КБ) 13354 просмотра

Re: Звук компьютера

Добавлено: 08 фев 2015, 17:02
Sergey Ivanov
моя лень не имеет предела. благодаря вашей ссылке ( про использование user32.dll) нашёл то что надо ! спасибо !

Re: Звук компьютера

Добавлено: 12 мар 2015, 09:59
Sergey Ivanov
dadreamer писал(а):А это не подходит? Есть ещё вот такая ссылка.

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

вторая ссылка - подходит, но можно ли получить текущую громкость ? сейчас получается, что регулировка громкости осуществляется "вслепую"

или можно задать конкретное значение громкости, а не только вверх или вниз ?

Re: Звук компьютера

Добавлено: 12 мар 2015, 11:34
dadreamer
Sergey Ivanov, почему у вас все темы такие "непростые"?.. :D
Кстати, а чем не устроила регулировка громкости в стандартном окне Windows?
А для того, чтобы управлять громкостью в Windows, нужно лезть в дебри. На системах, начиная с Vista, изменился механизм взаимодействия с аудио-устройствами. Почитайте вот здесь: About the Windows Core Audio APIs. Предполагая, что вы используете ОС не старее Висты, могу предложить только такое решение. Все классы наподобие IMMDeviceEnumerator определены в mmdeviceapi.h, так что нужно качать и ставить Microsoft Windows SDK for Windows 7. Подозреваю, что и ActiveX библиотеки там же лежат, а после установки должны зарегистрироваться в системе нужные классы, и уже после этого можно будет попытаться открыть их в :labview: . Как альтернатива, есть ещё NAudio с аналогами тех же классов. Возможно, что даже в коде не придётся ничего менять.

Re: Звук компьютера

Добавлено: 12 мар 2015, 11:36
Sergey Ivanov
Сделал так, но как-то не очень правильно это, как мне кажется
Снимок.JPG
VolumeCTRL.vi
(23.18 КБ) 253 скачивания
dadreamer писал(а):Sergey Ivanov, почему у вас все темы такие "непростые"?.. :D
Кстати, а чем не устроила регулировка громкости в стандартном окне Windows?
Ну не знаю, тянет меня к прекрасному )))
Вы имеете в виду вызов микшера (SndVol32.exe) ? у меня два монитора, поэтому, это окно надо перемещать (открывается по умолчания на 1 мониторе, а мне надо чтобы было на 2). Для перемещения использую cmdow. На некоторых компах cmdow работает стабильно, а на некоторых иногда не срабатывает.

PS надеялся, что через user32 как-то можно получить текущую громкость. видимо, нет. устанавливать новые компоненты не очень хочется.

Re: Звук компьютера

Добавлено: 12 мар 2015, 11:55
dadreamer
Sergey Ivanov, есть такое дело ) А если у пользователя громкость на пределе стоит? Хватит ли 52 итерации для обнуления громкости? Да и мне, честно говоря, не очень нравится слать сообщения каким-то приложениям. Имхо, как-то это ненадёжно работает время от времени.
Для перемещения использую cmdow. На некоторых компах cmdow работает стабильно, а на некоторых иногда не срабатывает.
Почему бы не использовать SetWindowPos, хэндл (hWnd) я показал, как получить в смежной теме. Или есть более простая MoveWindow. Эти функции должна работать на любой системе.
А что касается аудио, то весь пакет при дальнейшей работе вашей программы будет не нужен. Надо лишь выдернуть оттуда библиотеку для перечисления аудио-устройств. Скорее всего, её можно будет потом распространять вместе с приложением.

Re: Звук компьютера

Добавлено: 12 мар 2015, 12:10
Sergey Ivanov
dadreamer писал(а):Sergey Ivanov, есть такое дело ) А если у пользователя громкость на пределе стоит? Хватит ли 52 итерации для обнуления громкости? Да и мне, честно говоря, не очень нравится слать сообщения каким-то приложениям. Имхо, как-то это ненадёжно работает время от времени.
Для перемещения использую cmdow. На некоторых компах cmdow работает стабильно, а на некоторых иногда не срабатывает.
Почему бы не использовать SetWindowPos, хэндл (hWnd) я показал, как получить в смежной теме. Или есть более простая MoveWindow. Эти функции должна работать на любой системе.
А что касается аудио, то весь пакет при дальнейшей работе вашей программы будет не нужен. Надо лишь выдернуть оттуда библиотеку для перечисления аудио-устройств. Скорее всего, её можно будет потом распространять вместе с приложением.
52 - хватит. их всего 50 (весь диапазон). 52 - типа с запасом указал :haha:

Re: Звук компьютера

Добавлено: 13 мар 2015, 20:07
dadreamer
Sergey Ivanov, я тут вам решил немного помочь, попробовал библиотеку NAudio. Очень хорошо себя в работе она показала. Сопровождение неплохое и примеры на уровне, можно спокойно свой плеер/конвертор делать при желании. Используется библиотека NAudio.dll, на БД размещается .NET Constructor Node и в нём выбирается эта DLL. Сперва попробовал вот такой код (вы можете тоже попробовать в качестве домашнего задания :D):

Код: Выделить всё

using NAudio.CoreAudioApi; 
MMDeviceEnumerator devEnum = new MMDeviceEnumerator();
MMDevice defaultDevice = devEnum.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
string currVolume = "MasterPeakVolume : " + defaultDevice.AudioMeterInformation.MasterPeakValue.ToString();
Но получил на выходе громкость = 0 дБ, скорее всего потому что у меня используется на текущем компе дополнительная звуковуха, весь поток идёт через нее. Так что я перебрал все аудио-точки с помощью вот этого кода. Получилось вот что:
2015-03-13_21-57-13.jpg
2015-03-13_21-57-32.jpg
Untitled 2.vi
LV2011
(9.12 КБ) 241 скачивание
Первый элемент массива - как раз текущая громкость динамиков в моей системе. Установить громкость программно попробуйте сами, там до безобразия просто. :crazy:

Re: Звук компьютера

Добавлено: 15 мар 2015, 10:02
Sergey Ivanov
Да, действительно просто ! Жаль что через user32.dll громкость не задать (

Re: Звук компьютера

Добавлено: 15 мар 2015, 10:55
dadreamer
Sergey Ivanov, учтите, что на XP и ниже вышеописанный способ работать не будет.

Re: Звук компьютера

Добавлено: 15 мар 2015, 11:46
Sergey Ivanov
спасибо, буду знать !