急!,请问我的机器有两块声卡,在VC 里怎么得到这两块声卡的名字?

解决方案 »

  1.   

    MMRESULT waveInGetDevCaps(
      UINT uDeviceID,     
      LPWAVEINCAPS pwic,  
      UINT cbwic          
    );
      

  2.   

    int nNumDevs = waveOutGetNumDevs();
    for(int i=0; i<nNumDevs; i++){
    WAVEOUTCAPS wc;
    waveOutGetDevCaps(i, &wc, sizeof(WAVEOUTCAPS));
    m_cmbDevice.AddString(wc.szPname);
    }
    获取系统中声卡的名字,并添加到组合框m_cmbDevice中
      

  3.   

    通过对设备的枚举就可以解决,大概的代码如下:
    CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC, IID_ICreateDevEnum, (void **)&pSysDevEnum);
    pSysDevEnum->CreateClassEnumerator(*clsid, &pEnumCat, 0);
     IPropertyBag *pPropBag;
            ASSERT(pMoniker);
          
            hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, 
                                        (void **)&pPropBag);
                   if (FAILED(hr))
                continue;               varName.vt = VT_BSTR;
            hr = pPropBag->Read(L"FriendlyName", &varName, 0);这时候 varName.bstrVal 中就是声卡的名字。