¿Cómo detectar la presencia de un dispositivo de grabación predeterminado en el sistema?

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

  •  09-06-2019
  •  | 
  •  

Pregunta

¿Cómo puedo detectar si el sistema tiene instalado un dispositivo de grabación predeterminado?Apuesto a que esto se puede hacer mediante algunas llamadas a la API de Win32. ¿Alguien tiene alguna experiencia con esto?

Estoy hablando de hacer esto a través del código, no abriendo el panel de control y mirando las opciones de sonido.

¿Fue útil?

Solución

Utilizando el SDK de DirectX, puede llamar a DirectSoundCaptureEnumerate, que llamará a su función DSEnumCallback para cada dispositivo DirectSoundCapture en el sistema.El primer parámetro pasado a su DSEnumCallback es un LPGUID, que es la "Dirección del GUID que identifica el dispositivo que se enumera, o NULL para el dispositivo principal".

Si todo lo que necesita hacer es averiguar si hay un dispositivo de grabación presente (no creo que esto sea suficiente si realmente necesita saber el dispositivo predeterminado), puede 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;
}

Otros consejos

Existe una API de audio de código abierto llamada puertoaudio eso tiene un método que podrías usar.Creo que el método se llama Pa_GetDeviceInfo() o algo así.

La API de Win32 tiene una función llamada waveInGetNumDevs para ello.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top