Как определить наличие в системе устройства записи по умолчанию? - PullRequest
2 голосов
/ 03 сентября 2008

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

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

Ответы [ 3 ]

1 голос
/ 03 сентября 2008

Используя 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;
}
0 голосов
/ 06 сентября 2008

API-интерфейс win32 имеет функцию waveInGetNumDevs .

0 голосов
/ 03 сентября 2008

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

...