windows下调节系统音量的方法

一、模拟键盘快捷键实现系统音量控制

1:放大音量:

keybd_event(VK_VOLUME_UP,MapVirtualKey(VK_VOLUME_UP,0),KEYEVENTF_EXTENDEDKEY,0);    
keybd_event(VK_VOLUME_UP,MapVirtualKey(VK_VOLUME_UP,0),KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,0);


2:减小音量:

keybd_event(VK_VOLUME_DOWN,MapVirtualKey(VK_VOLUME_DOWN,0),KEYEVENTF_EXTENDEDKEY,0);   
keybd_event(VK_VOLUME_DOWN,MapVirtualKey(VK_VOLUME_DOWN,0),KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,0); 


3:静音/非静音:

keybd_event(VK_VOLUME_MUTE,MapVirtualKey(VK_VOLUME_MUTE,0),KEYEVENTF_EXTENDEDKEY,0);   
keybd_event(VK_VOLUME_MUTE,MapVirtualKey(VK_VOLUME_MUTE,0),KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,0);    


二、WASAPI(Windows Audio Session API)方式

 //Windows  系统音量设置
 HRESULT  hr = CoInitialize(NULL);
 if (FAILED(hr))
 {
  return FALSE;
 }
 IMMDeviceEnumerator  *deviceEnumerator = NULL;
 hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER,
  __uuidof(IMMDeviceEnumerator), (LPVOID  *)&deviceEnumerator);
 IMMDevice  *defaultDevice = NULL;
 hr = deviceEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &defaultDevice);
 if (FAILED(hr))
 {
  return  FALSE;
 }
 deviceEnumerator->Release();
 deviceEnumerator = NULL;

 hr = defaultDevice->Activate(__uuidof(IAudioEndpointVolume), CLSCTX_INPROC_SERVER, NULL, reinterpret_cast<void  **>(&m_endpointVolume));
 if (FAILED(hr))
 {
  return  FALSE;
 }
 BOOL  currentMute;
 hr = m_endpointVolume->GetMute(&currentMute);
 if (FAILED(hr))
 {
  return  FALSE;
 }
 if (currentMute == TRUE)
 {
  hr = m_endpointVolume->SetMute(FALSE, NULL);
 }
 float  currentVolume;
 hr = m_endpointVolume->GetMasterVolumeLevelScalar(&currentVolume); //把主音量的水平标量 
 if (FAILED(hr))
 {
  return  FALSE;
 }
 std::cout << "Current Volume is: %f" << currentVolume << std::endl;

 if (currentVolume < 0.5) //windows  系统  如果系统音量小于50%  则音量增加到50% 
 {
  float  Volume = 0.500;
  hr = m_endpointVolume->SetMasterVolumeLevelScalar(Volume, NULL);
 }

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值