您的位置:首页 > 其它

micphone静音设置(vista版本以上)

2015-12-31 11:17 274 查看
设置麦克风静音

#include "windows.h"
#include <mmsystem.h>

#include "mmdeviceapi.h"
#include <endpointvolume.h>

#pragma comment(lib, "Winmm.lib")

#define SAFE_RELEASE(ptr) \
{ \
if (ptr) \
{ \
(ptr)->Release(); \
(ptr) = NULL; \
} \
}

#define EXIT_ON_ERROR(hr)  \
if (FAILED(hr)) { goto Exit; }

int CMixer::GetMuteVista(MixerDeice dev)
{
EDataFlow device;
BOOL bState = FALSE;
HRESULT hr = S_OK;

IMMDeviceEnumerator *deviceEnumerator = NULL;
IMMDevice *defaultDevice = NULL;
IAudioEndpointVolume *endpointVolume = NULL;

switch (dev)
{
case MICROPHONE:
device = eCapture; break; //麦克风音量
default:
device = eRender; //PC 扬声器音量
}

hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER,
__uuidof(IMMDeviceEnumerator), (LPVOID *)&deviceEnumerator);
EXIT_ON_ERROR(hr)

hr = deviceEnumerator->GetDefaultAudioEndpoint(device, eConsole, &defaultDevice);
EXIT_ON_ERROR(hr)

hr = defaultDevice->Activate(__uuidof(IAudioEndpointVolume),
CLSCTX_INPROC_SERVER, NULL, (LPVOID *)&endpointVolume);
EXIT_ON_ERROR(hr)

hr = endpointVolume->GetMute(&bState);
EXIT_ON_ERROR(hr)

Exit:

if (FAILED(hr))
{
//This program requires Windows Vista. Or no Audio device is installed
return -1;
}
SAFE_RELEASE(deviceEnumerator)
SAFE_RELEASE(defaultDevice)
SAFE_RELEASE(endpointVolume)

return bState ? 0: 1;

}

BOOL CMixer::SetMuteVista(MixerDeice dev, BOOL vol)
{
EDataFlow device;
HRESULT hr = S_OK;
IMMDeviceEnumerator *deviceEnumerator = NULL;
IMMDevice *defaultDevice = NULL;
IAudioEndpointVolume *endpointVolume = NULL;

switch (dev)
{
case MICROPHONE:
device = eCapture; break;
default:
device = eRender;
}

hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER,
__uuidof(IMMDeviceEnumerator), (LPVOID *)&deviceEnumerator);
EXIT_ON_ERROR(hr)

hr = deviceEnumerator->GetDefaultAudioEndpoint(device, eConsole, &defaultDevice);
EXIT_ON_ERROR(hr)

hr = defaultDevice->Activate(__uuidof(IAudioEndpointVolume),
CLSCTX_INPROC_SERVER, NULL, (LPVOID *)&endpointVolume);
EXIT_ON_ERROR(hr)

hr = endpointVolume->SetMute(vol, NULL);
EXIT_ON_ERROR(hr)

Exit:
if (FAILED(hr))
return FALSE; //This program requires Windows Vista. Or no Audio device is installed

SAFE_RELEASE(deviceEnumerator)
SAFE_RELEASE(defaultDevice)
SAFE_RELEASE(endpointVolume)

return TRUE;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: