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; }
相关文章推荐
- jQuery操作基本控件方法实例分析
- 消息 266,级别 16,状态 2,过程 UserExchange,第 0 行 EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 0,当前计数 = 1。
- ssh之公钥(isa_pub)
- 灌水帖 asp.net非法请求时跳转到登录页面
- 聚类算法-Hierarchical(MIN)-C++
- iOS---设置导航条文字
- python中if __name__ == '__main__': 的解析
- windows模式编译
- Web-Scale IT 我之见!
- 详解Objective-C的meta-class
- redis windows 下载地址
- Download Manufacturers Visio Stencil
- Newtonsoft.Json高级用法
- 他山之石-php编译中遇到error解决办法!
- ScheduledExecutorService问题
- JQuery和JSON方式参数传递并处理JAVAWEB中文乱码问题
- 软件架构
- 详解Objective-C的meta-class
- [初级]设计模式--建造者模式
- php大form用post方式传递数据过多被截取的问题