시스템에 기본 녹음 장치가 있는지 어떻게 감지하나요?
문제
시스템에 기본 녹음 장치가 설치되어 있는지 어떻게 알 수 있나요?Win32 API에 대한 몇 가지 호출을 통해 이 작업을 수행할 수 있을 것으로 확신합니다. 이에 대한 경험이 있는 사람이 있습니까?
제어판을 열고 사운드 옵션을 살펴보는 것이 아니라 코드를 통해 이 작업을 수행하는 것에 대해 이야기하고 있습니다.
해결책
사용하여 다이렉트X SDK, 시스템의 각 DirectSoundCapture 장치에 대해 DSEnumCallback 함수를 호출하는 DirectSoundCaptureEnumerate를 호출할 수 있습니다.DSEnumCallback에 전달된 첫 번째 매개변수는 "열거 중인 장치를 식별하는 GUID의 주소 또는 기본 장치의 경우 NULL"인 LPGUID입니다.
녹음 장치가 있는지 확인하기만 하면 되는 경우(기본 장치를 알아야 하는 경우 이것만으로는 충분하지 않다고 생각합니다), 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;
}
다른 팁
라는 오픈 소스 오디오 API가 있습니다. 포트오디오 사용할 수 있는 방법이 있습니다.나는 그 메소드가 Pa_GetDeviceInfo()라고 불리는 것 같아요.
win32 API에는 다음과 같은 기능이 있습니다. waveInGetNumDevs 그것을 위해.
제휴하지 않습니다 StackOverflow