主要利用waveIn、waveOut系统接口来实现
#include <iostream.h>
#include <windows.h>
#include <mmsystem.h>
#include <atlbase.h>
#pragma comment(lib, "Winmm.lib")
int main()
{
int nSoundCardCount = waveOutGetNumDevs();
std::cout << "count: " << nSoundCardCount << std::endl;
std::string str_OutName;
for (int i=0; i<nSoundCardCount; i++)
{
WAVEOUTCAPS woc;
waveOutGetDevCaps(i, &woc, sizeof(woc));
int n = WideCharToMultiByte(CP_OEMCP, NULL, woc.szPname, -1, NULL, 0, NULL, FALSE);
char* ptemp = new char[n];
WideCharToMultiByte(CP_OEMCP, NULL, woc.szPname, -1, ptemp, n, NULL, FALSE);
str_OutName = ptemp;
std::cout << "Name: " << str_OutName << std::endl;
str_OutName = "";
delete[] ptemp;
}
std::cout << "==========================================================\n";
int nInSoundCardCount = waveInGetNumDevs();
std::cout << "in count: " << nInSoundCardCount << std::endl;
std::string str_InName;
for (int i = 0; i < nInSoundCardCount; i++)
{
WAVEOUTCAPS woc;
waveOutGetDevCaps(i, &woc, sizeof(woc));
int n = WideCharToMultiByte(CP_OEMCP, NULL, woc.szPname, -1, NULL, 0, NULL, FALSE);
char* ptemp = new char[n];
WideCharToMultiByte(CP_OEMCP, NULL, woc.szPname, -1, ptemp, n, NULL, FALSE);
str_InName = ptemp;
std::cout << "Name: " << str_InName << std::endl;
str_InName = "";
delete[] ptemp;
}
}