windows7下检测耳机麦克拔插
来源:互联网 发布:windows xp cd vl 编辑:程序博客网 时间:2024/06/09 19:06
#define SAFE_RELEASE(punk) \if ((punk) != NULL) \{ (punk)->Release(); (punk) = NULL; } #include <mmdeviceapi.h>#include "iostream"using namespace std; class CMMNotificationClient : public IMMNotificationClient { public:IMMDeviceEnumerator *m_pEnumerator;CMMNotificationClient():_cRef(1),m_pEnumerator(NULL){//初始化COM::CoInitialize(NULL);HRESULT hr = S_OK; //创建接口hr = CoCreateInstance( __uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&m_pEnumerator); if (hr==S_OK) { cout<<"接口创建成功"<<endl; } else { cout<<"接口创建失败"<<endl; } //注册事件hr = m_pEnumerator->RegisterEndpointNotificationCallback((IMMNotificationClient*)this); if (hr==S_OK) { cout<<"注册成功"<<endl; } else { cout<<"注册失败"<<endl; } }~CMMNotificationClient(){SAFE_RELEASE(m_pEnumerator)::CoUninitialize(); }// IUnknown methods -- AddRef, Release, and QueryInterface private:LONG _cRef; ULONG STDMETHODCALLTYPE AddRef(){return InterlockedIncrement(&_cRef);}ULONG STDMETHODCALLTYPE Release(){ULONG ulRef = InterlockedDecrement(&_cRef);if (0 == ulRef){delete this;}return ulRef;}HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, VOID **ppvInterface){if (IID_IUnknown == riid){AddRef();*ppvInterface = (IUnknown*)this;}else if (__uuidof(IMMNotificationClient) == riid){AddRef();*ppvInterface = (IMMNotificationClient*)this;}else{*ppvInterface = NULL;return E_NOINTERFACE;}return S_OK;}HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged( EDataFlow flow, ERole role, LPCWSTR pwstrDeviceId) { //cout<<"OnDefaultDeviceChanged"<<endl; return S_OK; } HRESULT STDMETHODCALLTYPE OnDeviceAdded(LPCWSTR pwstrDeviceId) { return S_OK; }; HRESULT STDMETHODCALLTYPE OnDeviceRemoved(LPCWSTR pwstrDeviceId) { return S_OK; } HRESULT STDMETHODCALLTYPE OnDeviceStateChanged( LPCWSTR pwstrDeviceId, DWORD dwNewState) { cout<<"OnDeviceStateChanged"<<endl; return S_OK; } HRESULT STDMETHODCALLTYPE OnPropertyValueChanged( LPCWSTR pwstrDeviceId, const PROPERTYKEY key) { return S_OK; } }; int main(int argc, TCHAR* argv[], TCHAR* envp[]) { CMMNotificationClient mmClient; system("pause");return 0; }参考微软文档https://msdn.microsoft.com/en-us/library/windows/desktop/dd370810(v=vs.85).aspx
0 0
- windows7下检测耳机麦克拔插
- Android4.×耳机插拔检测
- Android4.×耳机插拔检测
- android 耳机插拔检测(kernel)
- Audio笔记之耳机插拔检测
- android4.x 耳机插拔检测机制
- Audio笔记之耳机插拔检测
- android+耳机插拔和耳机按键检测
- 耳机插拔流程
- 耳机插拔流程
- Android 4.x耳机插拔检测实现方法
- Android 4.x耳机插拔检测实现方法
- Android4.2耳机插拔检测实现方法
- Android 4.x耳机插拔检测实现方法
- Android4.2耳机插拔检测实现方法
- 【TopDesk】3.1.1. 利用IMMNotificationClient实现耳机插拔检测
- linux下检测网线插拔(二)
- linux下检测网线插拔(三)
- scrapy设置代理proxy
- Toast的基本使用
- iOS个人整理37-Animation动画
- 8.长按复制到剪贴板
- webService的发布
- windows7下检测耳机麦克拔插
- 翻译:ORB-SLAM: a Versatile and Accurate Monocular SLAM System
- vi 编辑器学习
- nginx配置指向错误页面
- linux下多个cpp文件的Makefile编译
- bzoj 1012 [JSOI2008]最大数maxnumber
- 招聘一个靠谱的 iOS
- IBATIS的工作原理(1)(http://blog.csdn.net/chen861201/article/details/7614201)
- java Runtime 解析