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(&m_endpointVolume));
 if (FAILED(hr))
 {
  return  FALSE;
 }
 BOOL  currentMute;
 hr = m_endpointVolume->GetMute(¤tMute);
 if (FAILED(hr))
 {
  return  FALSE;
 }
 if (currentMute == TRUE)
 {
  hr = m_endpointVolume->SetMute(FALSE, NULL);
 }
 float  currentVolume;
 hr = m_endpointVolume->GetMasterVolumeLevelScalar(¤tVolume); //把主音量的水平标量 
 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);
 }

你可能感兴趣的:(windows下调节系统音量的方法)