Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Полное имя аудиоустройства


Автор: Jin X 10.2.2016, 14:52
Как известно, szPname в WAVEOUTCAPS содержит только 31 букву имени аудиоустройства. Я же хочу получить полное имя. В инете нахожу инфу только лишь об использовании расширенного формата WAVEOUTCAPS2 с последующим получением имени из реестра. Если я правильно понимаю, то NameGiud из WAVEOUTCAPS2 должно содержать GUID с именем ключа реестра в разделе HKLM\System\CurrentControlSet\Control\MediaCategories. Однако на практике всё иначе: NameGiud содержит нули, а значения ProductGuid, как и ManufacturerGuid совпадают на всех девайсах.
Код
type
  TWAVEOUTCAPS2 = packed record
    C: TWAVEOUTCAPS;
    ManufacturerGuid: TGUID;
    ProductGuid: TGUID;
    NameGuid: TGUID
  end;

var
  i: Integer;
  DevOut: TWAVEOUTCAPS2;

begin
  for i := -1 to waveOutGetNumDevs-1 do
  begin
    FillChar(DevOut, SizeOf(DevOut), 1);
    if waveOutGetDevCaps(i, @DevOut, SizeOf(DevOut)) = MMSYSERR_NOERROR then ComboBox1.Items.Add(DevOut.C.szPname + ' / ' + GUIDToString(DevOut.NameGuid))
  end;
  ComboBox1.ItemIndex := 0
end;

Может, я что-то не так делаю, хотя вряд ли.
Какие есть ещё способы? Рабочие...

Автор: Jin X 10.2.2016, 19:13
FillChar заполняет нулями, конечно, а не единицами. Это опечатка smile
Но результат то же :(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)