Quiero cambiar el volumen del programa (y no master volumen). Tengo el siguiente código en este momento:Cambiar el volumen del programa en Win 7
DllImport("winmm.dll")]
public static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume);
[DllImport("winmm.dll")]
public static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume);
private void volumeBar_Scroll(object sender, EventArgs e)
{
// Calculate the volume that's being set
int NewVolume = ((ushort.MaxValue/10) * volumeBar.Value);
// Set the same volume for both the left and the right channels
uint NewVolumeAllChannels = (((uint)NewVolume & 0x0000ffff) | ((uint)NewVolume << 16));
// Set the volume
waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels);
}
Esto solo funciona en Win XP, no en Windows 7 (y probablemente tampoco en Vista). No he encontrado ningún script que logre lo mismo en Win 7, solo para cambiar el volumen maestro (que no estoy buscando).
Estoy usando este código: http://pastebin.com/RcRjfBu4 sin embargo, la depuración me da '0'. El volumen tampoco cambia. – Devator
Retval = 0 significa éxito, así que no hubo suerte allí. Como dije, funciona para mí. Supongo que tienes Win7 SP1. También tengo VS11 beta instalado, que puede haber arreglado algo. – Phil
Ok, puedo confirmar que está funcionando (solo la mitad). Al deslizar el control deslizante, veo que cambia el volumen (solo visual) - eche un vistazo a http://dl.dropbox.com/u/6166898/slider.png. ¡Pero el volumen ** no ** ha cambiado! Cuando deslizo manualmente el control deslizante de volumen de Windows ** cambia **, pero no desde el programa. ¿Me estoy perdiendo de algo? – Devator