Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить имена всех исходящих WAVE устройств

Delphi , Мультимедиа , Аудио

Получить имена всех исходящих WAVE устройств

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

// note: DevicesNames must be created before calling this procedure 

uses mmsystem;

 procedure GetWaveOutDevices(DeviceNames: TStrings);
 var
   DNum: Integer;
   i: Integer;
   Caps: TWaveOutCapsA;
 begin
   DNum := waveOutGetNumDevs;  // Number of Devices 
  for i := 0 to DNum - 1 do     // Query Devicenames 
  begin
     waveOutGetDevCaps(i, @Caps, SizeOf(TWaveOutCapsA));
     DeviceNames.Add(string(Caps.szPname));
   end;
 end;


 procedure TForm1.Button1Click(Sender: TObject);
 begin
   GetWaveOutDevices(Listbox1.Items);
 end;

Пример программирования на Delphi, который извлекает имена всех выходящих устройств Wave и заполняет их в список. Вот разбивка кода:

Процедура GetWaveOutDevices

Эта процедура принимает параметр TStrings под названием DeviceNames, представляющий список строк для хранения имен устройств.

Продолжение...

  1. Вызывает waveOutGetNumDevs для получения количества доступных устройств Wave.
  2. Перебирает каждый девайс с помощью цикла for, начиная от 0 и до общего количества устройств минус 1 (поскольку индексы начинаются с 0).
  3. Для каждого устройства вызывает waveOutGetDevCaps для извлечения информации о девайсе, передавая текущий индекс i, указатель на структуру TWaveOutCapsA (@Caps) и размер этой структуры (SizeOf(TWaveOutCapsA)).
  4. Извлекает имя устройства из структуры TWaveOutCapsA с помощью свойства szPname.
  5. Добавляет извлеченное имя устройства в список DeviceNames с помощью метода Add.

Процедура Button1Click

Это обработчик события клика кнопки на Form1. Когда кнопка кликается, она вызывает процедуру GetWaveOutDevices и передает свойство Items списка (Listbox1) как параметр DeviceNames. Это заполняет список устройств Wave.

Некоторые предложения по улучшению:

  • Рассмотрите добавление обработки ошибок для случаев, когда waveOutGetNumDevs или waveOutGetDevCaps неудачны.
  • Возможно, вам захотеться добавить больше информации к имени устройства, например, его ID или возможности, если они доступны в структуре TWaveOutCapsA.
  • Если вы планируете использовать этот код в многопоточной приложении, рассмотрите возможность сделать процедуру GetWaveOutDevices потокобезопасной.

В целом, код хорошо структурирован и легко понятен. Он эффективно извлекает имена выходящих устройств Wave и заполняет их в список.

Получение имен всех исходящих WAVE устройств в Delphi с помощью процедуры GetWaveOutDevices.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Аудио ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 15:17:28/0.0030860900878906/0