// Header File
#pragma once
#include <mmdeviceapi.h>
#include <endpointvolume.h>
#include <corecrt_math.h>
typedef void (CALLBACK* PFN_NOTIFYCALLBACK)(DWORD dwVolume, LPVOID lpContext);
class CVolumeCtrl : public IAudioEndpointVolumeCallback
{
public:
CVolumeCtrl(PFN_NOTIFYCALLBACK pCallback, LPVOID lpContext);
~CVolumeCtrl(void);
public:
inline BOOL VerifyValid(void) { return (NULL != this) ? m_bValid : FALSE; }
BOOL GetVolume(DWORD* pdwVolume);
BOOL SetVolume(DWORD dwVolume);
BOOL GetMute(BOOL* pbMute);
BOOL SetMute(BOOL bMute);
BOOL Notify(BOOL bRegister);
public:
STDMETHODIMP_(ULONG)AddRef() { return InterlockedIncrement(&m_lRefCount); }
STDMETHODIMP_(ULONG)Release()
{
LONG lRet = InterlockedDecrement(&m_lRefCount);
if (0 == lRet) { delete this; }
return lRet;
}
STDMETHODIMP QueryInterface(REFIID IID, void **ReturnValue)
{
if ((IID == IID_IUnknown) || (IID =
监控Windows系统音量变化通知
最新推荐文章于 2024-08-14 14:25:54 发布