VC Vista/Win7下如何实现音量控制与获取终端设备音量改变事件的回调函数

最帅的小猪 2011-10-27 05:09:45
HRESULT hr = S_OK;

if(m_pEndptVolCtrl != NULL)
return FALSE;

if (m_pAudioEvents == NULL)
{
hr = E_POINTER;
return FALSE;
}

//g_EPVolEvents.SetCallback(fCallback); //set callback

CoInitialize(NULL);

hr = CoCreateGuid(&m_guidMyContext);

if(FAILED(hr))
return FALSE;

// Get enumerator for audio endpoint devices.
hr = CoCreateInstance(__uuidof(MMDeviceEnumerator),
NULL, CLSCTX_INPROC_SERVER,
__uuidof(IMMDeviceEnumerator),
(void**)&m_pEnumerator);

if(FAILED(hr))
return FALSE;

if(wdevid != NULL)
{
hr = m_pEnumerator->GetDevice(wdevid, &m_pDevice);
}
else // Get default audio-rendering or audio-capture device.
{
if(bCapture == FALSE)
{
hr = m_pEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &m_pDevice);
}
else
{
hr = m_pEnumerator->GetDefaultAudioEndpoint(eCapture, eConsole, &m_pDevice);
GetMicrophoneBoostVolumeLevel(m_pDevice);

}
}

if(FAILED(hr))
return FALSE;

hr = m_pDevice->Activate(__uuidof(IAudioEndpointVolume),
CLSCTX_ALL, NULL, (void**)&m_pEndptVolCtrl);

if(FAILED(hr))
return FALSE;

// Get the session manager for the endpoint device.
hr = m_pDevice->Activate(__uuidof(IAudioSessionManager),
CLSCTX_INPROC_SERVER, NULL,
(void**)&m_pManager);
if(FAILED(hr))
return FALSE;

// Get the control interface for the process-specific audio
// session with session GUID = GUID_NULL. This is the session
// that an audio stream for a DirectSound, DirectShow, waveOut,
// or PlaySound application stream belongs to by default.

hr = m_pManager->GetAudioSessionControl(NULL, 0, &m_pControl);

if(FAILED(hr))
return FALSE;

hr = m_pControl->RegisterAudioSessionNotification(m_pAudioEvents);//注册IAudioSessionEvents接口


if(FAILED(hr))
return FALSE;

/*if(g_pEndptVolCtrl)
hr = g_pEndptVolCtrl->RegisterControlChangeNotify(
(IAudioEndpointVolumeCallback*)&g_EPVolEvents);*/

/*if(FAILED(hr))
return FALSE;*/
注册IaudioSessionEvents接口后,应该怎么写回调来获取音频终端的音量改变事件呢?
...全文
621 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
大道曙光 2013-06-25
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_7c36017b01012jgx.html

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧