ну, есть и способ в DirectX, однако я не слишком много с ним играл, извините ... WaveOut также является хорошей альтернативой, потому что он поддерживается WinXP (самым ранним, который я тестировал) вплоть до W7 и скорее всего W8.

dows 7 есть несколько устройств воспроизведения.

Пример (на моем ноутбуке): динамики и двойные наушники Независимые двойные наушники SPDIF (цифровой выход через док-станцию ​​HP)

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

Мое требование: при начальной загрузке этого списка я хочу выбрать устройство по умолчанию (как установлено в Windows 7 - Панель управления -> Звук -> вкладка Воспроизведение)

Итак, мой код для перечисления устройств вывода звука:

Код:

procedure TForm1.FillDevices;
var
  AudioDevEnum: TSysDevEnum;
  n: string;
  i, ps: integer;
begin

  AudioDevEnum := TSysDevEnum.Create(CLSID_AudioRendererCategory);
  try

    if AudioDevEnum.CountFilters = 0 then
      Exit;

    for i := 0 to AudioDevEnum.CountFilters - 1 do
    begin
      n  := AudioDevEnum.Filters[i].FriendlyName;
      ps := pos('DirectSound: ', n);
      if ps <> 0 then
      begin
        ps := pos('Modem', n);
        if ps = 0 then
        begin
          // Delete(n, 1, 13);
          lstDevices.Items.Add(n);
        end;
      end;
    end;
    lstDevices.ItemIndex := 0;

  finally
    AudioDevEnum.Free;
  end;
end;

После получения списка я хочу определить элемент, который установлен как «устройство по умолчанию» на панели управления звуком, и выбрать его. Это делается для того, чтобы приложение в первый раз сохраняло правильное устройство, не требуя от пользователя выполнения этой работы.

Можно ли это сделать? Как?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Обратите внимание, что я хочу выбрать и сохранить (в INI-файл) устройство по умолчанию, чтобы оно могло использоваться моим приложением для вывода звука (через компонент DSPack). Я не хочу менять настройки Windows.

Ответы на вопрос(1)

Ваш ответ на вопрос