Как определить наличие в системе устройства записи по умолчанию?

StackOverflow https://stackoverflow.com/questions/41330

  •  09-06-2019
  •  | 
  •  

Вопрос

Как определить, установлено ли в системе устройство записи по умолчанию? Могу поспорить, что это можно сделать с помощью некоторых вызовов Win32 API, у кого-нибудь есть опыт работы с этим?

Я говорю о том, чтобы сделать это с помощью кода, а не открывая панель управления и просматривая параметры звука.

Это было полезно?

Решение

Используя DirectX SDK , вы можете вызовите DirectSoundCaptureEnumerate, который вызовет вашу функцию DSEnumCallback для каждого устройства DirectSoundCapture в системе. Первый параметр, передаваемый вашему DSEnumCallback, представляет собой LPGUID, который является «адресом GUID, который идентифицирует перечисляемое устройство, или NULL для основного устройства».

Если все, что вам нужно сделать, это выяснить, имеется ли записывающее устройство (я не думаю, что это достаточно хорошо, если вам действительно нужно знать устройство по умолчанию), вы можете использовать waveInGetNumDevs:

#include <tchar.h>
#include <windows.h>
#include "mmsystem.h"

int _tmain( int argc, wchar_t *argv[] )
{
    UINT deviceCount = waveInGetNumDevs();

    if ( deviceCount > 0 )
    {
        for ( int i = 0; i < deviceCount; i++ )
        {
            WAVEINCAPSW waveInCaps;

            waveInGetDevCapsW( i, &waveInCaps, sizeof( WAVEINCAPS ) );

            // do some stuff with waveInCaps...
        }
    }

    return 0;
}

Другие советы

Существует открытый аудиоинтерфейс под названием PortAudio , в котором есть метод, который вы можете использовать. Я думаю, что метод называется Pa_GetDeviceInfo () или что-то.

В Win32 API есть функция под названием waveInGetNumDevs для этого.

scroll top