Pregunta

¿Cómo hago para cambiar el volumen del sonido en Win32 de C ++? También cómo iba a activar / desactivar esto? Gracias por la ayuda!

¿Fue útil?

Solución

Hay dos opciones:

  1. Hay una respuesta a esa pregunta aquí en la SO (cambiando el volumen maestro de C ++, que también incluye SetMute, etc.)

  2. ¿ha considerado que muestra los controles de volumen y dejar que el usuario? Si es así, puedo publicar algo de código para eso. (Es, básicamente, sólo cáscara a la aplicación de control de volumen.

Otros consejos

Utilice la waveOutSetVolume API.

Este es un ejemplo:

  DWORD dwVolume;

  if (waveOutGetVolume(NULL, &dwVolume) == MMSYSERR_NOERROR)
    waveOutSetVolume(NULL, 0); // mute volume

  // later point in code, to unmute volume...
  waveOutSetVolume(NULL, dwVolume);

waveOutSetVolume y mixerSetControlDetails sólo cambian el volumen para su aplicación en Windows Vista y superior.

Si desea cambiar el volumen principal en Vista y más allá, buscar la interfaz IAudioEndpointVolume .

Aquí está un post que escribió sobre esto un par de años atrás.

Tal vez usted debería considerar la posibilidad de no cambiar el volumen global. Pensar en ello - si me baja el volumen en MediaPlayer todos los demás programas siguen siendo tan fuerte como antes, y eso es exactamente lo que espero de cualquier programa - a sólo reducen su propio volumen. Por supuesto que puede haber razones para cambiar el volumen global, ningún delito;)

Si lo único que quiere hacer es cambiar el volumen, puede utilizar los códigos de teclas virtuales para cambiar el volumen de esta manera:

void changeVolume()
{
  INPUT ip={0};
  ip.type = INPUT_KEYBOARD;
  ip.ki.wVk = VK_VOLUME_UP;   //or VOLUME_DOWN or MUTE
  SendInput(1, &ip, sizeof(INPUT));
  ip.ki.dwFlags = KEYEVENTF_KEYUP;
  SendInput(1, &ip, sizeof(INPUT));
}

forma más sencilla de cambiar de silencio es

const int APPCOMMAND_VOLUME_MUTE = 0x80000;
SendMessage(this.Handle, WM_APPCOMMAND, IntPtr.Zero, (IntPtr)APPCOMMAND_VOLUME_MUTE);

En forma similar se puede desencadenar + teclas de volumen y -VOLUME comportamiento. Echar un vistazo a http://www.blackwasp.co.uk/BasicVolumeControl.aspx y http: // msdn.microsoft.com/en-us/library/windows/desktop/ms646247%28v=vs.85%29.aspx

Hay también valora para cosas como el control de volumen del micrófono, pero no los han tratado.

Si necesita más control sobre el volumen maestro del sistema, se debe comprobar la versión de Windows y hacer 2 versiones de código:
Algo así como mencionado Cambio de nivel de volumen maestro para Windows XP.
Algo así como https://stackoverflow.com/a/3437069/1365066 para Vista y superior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top