本帖最后由 lihuifeng1 于 2012-10-16 16:37:55 编辑

解决方案 »

  1.   

    我建议是看 在win7/8下这些函数有什么变化,或者你动用这些函数是否用了一些默认的值,而在win7/8下,这些值需要明确定义。
      

  2.   

    从vista开始,Windows音量调节使用endpoint接口。相关说明和代码可在MSDN中找到,进入msdn,搜索endpoint。
    CoInitialize(NULL);
    IMMDeviceEnumerator *deviceEnumerator = NULL;
    hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER, 
    __uuidof(IMMDeviceEnumerator), (LPVOID *)&deviceEnumerator);
    IMMDevice *defaultDevice = NULL; hr = deviceEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &defaultDevice);
    deviceEnumerator->Release();
    deviceEnumerator = NULL; IAudioEndpointVolume *endpointVolume = NULL;
    hr = defaultDevice->Activate(__uuidof(IAudioEndpointVolume), 
    CLSCTX_INPROC_SERVER, NULL, (LPVOID *)&endpointVolume);
    defaultDevice->Release();
    defaultDevice = NULL;
    剩下的请自己查询。
      

  3.   

    上面的代码是调节主音量的,若调节麦克,把eRender改成eCapture
      

  4.   

    上面的代码是控制扬声器音量的,我把MIXERLINE_COMPONENTTYPE_DST_SPEAKERS换成MIXERLINE_COMPONENTTYPE_DST_WAVEIN或者MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE,为什么不能控制麦克风的音量?