如何检测系统中是否存在默认录制设备?

时间:2008-09-03 08:46:48

标签: winapi audio device

如何检测系统是否安装了默认录制设备? 我打赌这可以通过调用Win32 API完成,任何人都有这方面的经验吗?

我正在谈论通过代码执行此操作,而不是打开控制面板并查看声音选项。

3 个答案:

答案 0 :(得分:1)

使用DirectX SDK,您可以调用DirectSoundCaptureEnumerate,它将为系统上的每个DirectSoundCapture设备调用DSEnumCallback函数。传递给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;
}

答案 1 :(得分:0)

有一个名为PortAudio的开源音频API,它有一个可以使用的方法。我认为该方法称为Pa_GetDeviceInfo()或其他东西。

答案 2 :(得分:0)

win32 api有一个名为waveInGetNumDevs的函数。