Работа с аудиоустройствами в операционных системах Windows Vista и Win7 может быть непростой задачей из-за особенностей API. Эта статья поможет разработчикам, использующим среду программирования Delphi, получить доступ к названиям всех аудио устройств на этих платформах.
Основная часть
Для получения информации об аудиоустройствах в Windows Vista и Win7 можно использовать интерфейс IMMDevice из Media Foundation. Разработчики часто сталкиваются с трудностями, пытаясь перейти от количества доступных устройств к их свойствам.
Пример: Получение списка аудио устройств
uses
Mmdeviceapi_tlb;
// Функция для получения PropertyStore устройства
function GetDevicePropertyStore(deviceID: TWCHAR; out propertyStore: IPropertyStore): boolean;
begin
// Код для инициализации и получения PropertyStore, используя deviceID
end;
var
DeviceEnumerator: IMMDeviceEnumerator;
count: Integer;
devices: array of IMMDevice;
devIndex: Integer;
// Инициализация перечислителя устройств
DeviceEnumerator := CoCreateInstance(__uuidof(MMDeviceEnumerator));
try
// Получение количества аудио устройств
DeviceEnumerator.GetCount(@count);
SetLength(devices, count);
// Перечисление всех доступных устройств
for devIndex := 0 to count - 1 do
begin
DeviceEnumerator.EnumAudioEndpoints(eRender, -1, devices[devIndex]);
var
propertyStore: IPropertyStore;
friendlyNameKey: TPropertyKey = PKEY_Device_FriendlyName;
if GetDevicePropertyStore(devices[devIndex].GetId, propertyStore) then
begin
// Чтение свойства FriendlyName из PropertyStore
propertyStore.GetValueByKey(friendlyNameKey);
// Получение и использование названия устройства
end;
end;
finally
DeviceEnumerator := nil; // Освобождение ресурсов
end;
// Определение ключа PKEY_Device_FriendlyName
TPropertyKey = record
fmtid: TGUID;
pid: DWORD;
end;
PKEY_Device_FriendlyName: TPropertyKey = (fmtid: (D1:$a45c254e; D2:$df1c ; D3:$4efd; D4: ($80, $20, $67, $d1, $46, $a8, $50, $e0)); pid: 14);
Важно правильно использовать ключ PKEY_Device_FriendlyName для получения имени устройства из PropertyStore. Необходимо декларировать его как описано выше.
Заключение
В этой статье мы рассмотрели, как получить доступ к названиям аудиоустройств в Delphi для Windows Vista/Win7. Используя интерфейс IMMDevice и ключ PKEY_Device_FriendlyName, можно успешно работать с устройствами в современных приложениях.
Дополнительные материалы
Для более глубокого понимания работы с аудиоустройствами рекомендуем обратиться к Windows SDK, где содержится подробная документация и примеры использования API.
Этот текст является пересказом контекста запроса в статье о том, как использовать ключ PKEY_Device_FriendlyName для получения дружелюбного названия аудиоустройства.
В статье рассматриваются особенности работы с аудиоустройствами в Delphi для Windows Vista/Win7 и предоставляются рекомендации по использованию ключа `PKEY_Device_FriendlyName` для получения названий устройств.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS