Pergunta

Como posso detectar se o sistema possui um dispositivo de gravação padrão instalado?Aposto que isso pode ser feito através de algumas chamadas para a API Win32, alguém tem alguma experiência com isso?

Estou falando sobre fazer isso através de código, não abrindo o painel de controle e dando uma olhada nas opções de som.

Foi útil?

Solução

Usando o SDK do DirectX, você pode chamar DirectSoundCaptureEnumerate, que chamará sua função DSEnumCallback para cada dispositivo DirectSoundCapture no sistema.O primeiro parâmetro passado para seu DSEnumCallback é um LPGUID, que é o “Endereço do GUID que identifica o dispositivo que está sendo enumerado, ou NULL para o dispositivo primário”.

Se tudo que você precisa fazer é descobrir se um dispositivo de gravação está presente (não acho que isso seja bom o suficiente se você realmente precisa saber o dispositivo padrão), você pode usar 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;
}

Outras dicas

Existe uma API de áudio de código aberto chamada PortoÁudio que tem um método que você pode usar.Acho que o método se chama Pa_GetDeviceInfo() ou algo assim.

A API win32 tem uma função chamada ondaInGetNumDevs por isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top