Comment détecter la présence d'un périphérique d'enregistrement par défaut dans le système ?

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

  •  09-06-2019
  •  | 
  •  

Question

Comment puis-je détecter si le système dispose d'un périphérique d'enregistrement par défaut installé ?Je parie que cela peut être fait via quelques appels à l'API Win32, quelqu'un a-t-il une expérience avec cela ?

Je parle de le faire via du code, pas en ouvrant le panneau de configuration et en jetant un œil sous les options sonores.

Était-ce utile?

La solution

En utilisant le SDK DirectX, vous pouvez appeler DirectSoundCaptureEnumerate, qui appellera votre fonction DSEnumCallback pour chaque périphérique DirectSoundCapture du système.Le premier paramètre transmis à votre DSEnumCallback est un LPGUID, qui est « l’adresse du GUID qui identifie le périphérique énuméré, ou NULL pour le périphérique principal ».

Si tout ce que vous avez à faire est de savoir si un périphérique d'enregistrement est présent (je ne pense pas que ce soit suffisant si vous avez vraiment besoin de connaître le périphérique par défaut), vous pouvez utiliser 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;
}

Autres conseils

Il existe une API audio Open Source appelée PortAudio qui a une méthode que vous pourriez utiliser.Je pense que la méthode s'appelle Pa_GetDeviceInfo() ou quelque chose comme ça.

L'API win32 a une fonction appelée waveInGetNumDevs pour ça.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top