2

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

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

4

3 回答 3

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;
}
于 2008-09-03T09:55:52.790 回答
0

有一个名为PortAudio的开源音频 API ,它有一个您可以使用的方法。我认为该方法称为 Pa_GetDeviceInfo() 之类的。

于 2008-09-03T09:11:55.483 回答
0

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

于 2008-09-06T18:19:16.267 回答