星小夜的登录器  v1.0
mutedsessionevents.cpp
浏览该文件的文档.
1 
10 #include "mutedsessionevents.h"
11 
12 extern volatile bool g_bMuted;
13 
14 CMutedSessionEvents::CMutedSessionEvents(IAudioSessionManager* pAudioSessionManager)
15 {
16  m_AudioSessionManager = pAudioSessionManager;
17  _cRef = 1;
18 }
19 
20 ULONG STDMETHODCALLTYPE CMutedSessionEvents::Release()
21 {
22  ULONG ulRef = InterlockedDecrement(&_cRef);
23  if (0 == ulRef)
24  {
25  delete this;
26  }
27  return ulRef;
28 }
29 
30 HRESULT STDMETHODCALLTYPE CMutedSessionEvents::QueryInterface(
31  REFIID riid,
32  VOID **ppvInterface)
33 {
34  if (IID_IUnknown == riid)
35  {
36  AddRef();
37  *ppvInterface = (IUnknown*)this;
38  }
39  else if (__uuidof(IAudioSessionEvents) == riid)
40  {
41  AddRef();
42  *ppvInterface = (IAudioSessionEvents*)this;
43  }
44  else
45  {
46  *ppvInterface = NULL;
47  return E_NOINTERFACE;
48  }
49  return S_OK;
50 }
51 
53  float NewVolume,
54  BOOL NewMute,
55  LPCGUID EventContext)
56 {
57  // 防止其它程序对静音篡改
58  if ((BOOL)g_bMuted != NewMute)
59  {
61  }
62 
63  return S_OK;
64 }
65 
67 {
68  HRESULT hr = S_FALSE;
69 
70  // 获得音量、静音控制接口
71  ISimpleAudioVolume *pAudioVolume = NULL;
72  hr = m_AudioSessionManager->GetSimpleAudioVolume(NULL,0,&pAudioVolume);
73  if (FAILED(hr)) return false;
74 
75  if(SUCCEEDED(hr))
76  {
77  pAudioVolume->SetMute(bMuted, &GUID_NULL);
78 
79  // 更改全局静音状态
80  g_bMuted = bMuted;
81  }
82 
83  if (pAudioVolume != NULL)
84  {
85  pAudioVolume->Release();
86  pAudioVolume = NULL;
87  }
88  return true;
89 }
CMutedSessionEvents::_cRef
LONG _cRef
Definition: mutedsessionevents.h:85
g_bMuted
volatile bool g_bMuted
全局静音标志
Definition: main.cpp:22
CMutedSessionEvents::m_AudioSessionManager
IAudioSessionManager * m_AudioSessionManager
Definition: mutedsessionevents.h:88
CMutedSessionEvents::CMutedSessionEvents
CMutedSessionEvents(IAudioSessionManager *pAudioSessionManager)
Definition: mutedsessionevents.cpp:14
CMutedSessionEvents::OnSimpleVolumeChanged
HRESULT STDMETHODCALLTYPE OnSimpleVolumeChanged(float NewVolume, BOOL NewMute, LPCGUID EventContext)
Definition: mutedsessionevents.cpp:52
mutedsessionevents.h
静音功能依赖头文件
CMutedSessionEvents::AddRef
ULONG STDMETHODCALLTYPE AddRef()
Definition: mutedsessionevents.h:25
CMutedSessionEvents::TxSetMuted
bool TxSetMuted(bool bMuted)
Definition: mutedsessionevents.cpp:66
CMutedSessionEvents::Release
ULONG STDMETHODCALLTYPE Release()
Definition: mutedsessionevents.cpp:20
CMutedSessionEvents::QueryInterface
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, VOID **ppvInterface)
Definition: mutedsessionevents.cpp:30