Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение списка аудиоустройств 
V
    Опции темы
Erigity
Дата 13.2.2010, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.2.2009
Где: Тверь

Репутация: нет
Всего: нет



Как в WinXP получить список воспроизводящих звук аудиоустройств?
В идеале - все те устройства, которые отображаются в Панель Управления->Звуки и аудиоустройства->Аудио->Воспроизведение звука.
Понятно, что они хранятся в реестре, но найти их там, я не нашел smile Вернее, нашел что-то похожее вроде бы в CurrentControlSet, но там всё в кучу и много мусора smile
В интернете тоже пусто :(

upd:Нашел что-то похожее на правду по адресу: HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum\{33D9A762-90C8-11D0-BD43-00A0C911CE86}
Проверьте, кому не лень, действительно ли там воспроизводящие устройства, или это у меня совпадение smile  И такой ли путь(просто {33D9A762-90C8-11D0-BD43-00A0C911CE86} смущает(вдруг оно непостоянное и от чего-то зависит))

upd2: Хм.. ошибочка) там записывающие девайсы)
Воспроизводящие тут: HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum\{E0F158E1-CB04-11D0-BD4E-00A0C911CE86}
Т.е., насколько я понимаю, исключением Default DirectSound DeviceDefault WaveOut Device и устройств с префиксом DirectSound: получаем нужный список?smile 

Все же хотелось бы получить более общую инфу с разных машинок  smile 

Это сообщение отредактировал(а) Erigity - 13.2.2010, 12:57
PM   Вверх
Snowy
Дата 15.2.2010, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\MEDIA
PM MAIL   Вверх
Erigity
Дата 16.2.2010, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.2.2009
Где: Тверь

Репутация: нет
Всего: нет



Цитата(Snowy @ 15.2.2010,  16:19)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\MEDIA

Спасибо, но это не совсем то, что требовалось) Мне нужны были именно названия устройств вроде Logitech USB Headset, поскольку заменой ключа Playback по адресу HKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper на название устройства можно заменять текущее воспроизводящее smile 
PM   Вверх
Snowy
Дата 16.2.2010, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Тогда нужно немного не так.
Код
var
  i, k: integer;
  w:    TWAVEOUTCAPS;
  n:    string;
begin
  k := waveOutGetNumDevs; // Device Count
  for i := 0 to k - 1 do
  begin
    FillChar(w, SizeOf(TWAVEOUTCAPS), #0);
    WaveOutGetDevCaps(i, @w, SizeOf(TWAVEOUTCAPS)); // GetDeviceInfo
    n := w.szPname; // DeviceName
    // Memo1.Lines.Add(n);
  end;
end;

Код выбирает только те устройства, которые можно назначить в качестве устройства вывода звука.
Вот только не уверен, что замена значения в реестре будет работать в висте или 7 с ограниченными правами...
PM MAIL   Вверх
Erigity
Дата 16.2.2010, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.2.2009
Где: Тверь

Репутация: нет
Всего: нет



Спасибо smile Так действительно удобнее, чем реестр лопатить. 
Программу я для себя делал, так что насчет висты и семерки можно не волноваться, поскольку апгрейд еще не скоро, а железо уже не потянет smile 

И еще: насколько я успел заметить, в WinAPI нет функции для замены воспроизводящего устройства(по крайней мере, в mmsystem). Или я ошибаюсь?  smile

З.Ы.:
Код

WaveOutGetDevCaps(0, @w, SizeOf(TWAVEOUTCAPS)); // GetDeviceInfo

У вас очепятка. Первый параметр должен быть счетчиком цикла.  smile 
PM   Вверх
Snowy
Дата 17.2.2010, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Ага. Счётчик забыл... Но, имея мозг, не сложно догадаться smile
А что касается замены устройства - такое действие винда считает непозволительным.
Программа вправе выбирать только устройство, через которе будет воспроизводить она сама.
На другие программы влиять права не имеет.
Поэтому такого функционала не предусмотренно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0743 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.