Skip to content


Control de volumen por código en Compact Framework C#

Aqui pongo otra clase que ha hecho Carlitros para controlar el volumen por código

public class ControlVolumen
{
//Estas constantes contienen los niveles de volumen de la PDA
const int OFF = 1;
const int VERY_LOW = 858993459;
const int LOW = 1717986918;
const int NORMAL = -1717986919;
const int HIGH = -858993460;
const int VERY_HIGH = -1;

[DllImport("coredll.dll")]
private static extern int waveOutSetVolume(IntPtr hwo, int dwVolume);
[DllImport("coredll.dll")]
private static extern int waveOutGetVolume(IntPtr hwo, ref int dwVolume);

public static void Apagado()
{
waveOutSetVolume(IntPtr.Zero, OFF);
}

public static void MuyBajo()
{
waveOutSetVolume(IntPtr.Zero, VERY_LOW);
}

public static void Bajo()
{
waveOutSetVolume(IntPtr.Zero, LOW);
}

public static void Normal()
{
waveOutSetVolume(IntPtr.Zero, NORMAL);
}

public static void Alto()
{
waveOutSetVolume(IntPtr.Zero, HIGH);
}

public static void MuyAlto()
{
waveOutSetVolume(IntPtr.Zero, VERY_HIGH);
}

public static void SubirVolumen()
{
int vol = 0;
waveOutGetVolume(IntPtr.Zero, ref vol);
switch (vol)
{
case (OFF):
MuyBajo();
break;

case (VERY_LOW):
Bajo();
break;

case (LOW):
Normal();
break;

case (NORMAL):
Alto();
break;

case (HIGH):
MuyAlto();
break;

case (VERY_HIGH):
MessageBox.Show("Volumen a tope");
break;
}
}

public static void BajarVolumen()
{
int vol = 0;
waveOutGetVolume(IntPtr.Zero, ref vol);
switch (vol)
{
case (OFF):
MessageBox.Show("Sin sonido");
break;

case (VERY_LOW):
Apagado();
break;

case (LOW):
MuyBajo();
break;

case (NORMAL):
Bajo();
break;

case (HIGH):
Normal();
break;

case (VERY_HIGH):
Alto();
break;
}
}
}

Espero que os sirva. Saludos!

Artículos Relacionados

Posted in C#, Compact Framework. Tagged with , .

3 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Daniel said

    hola podrias ayudarnos??? queremos utilizar tu clase pero no sabemos que controles utilizar en el formulario….
    Otra pregunta tu codigo aplica a C# de visual.Net?….
    y de pronto nos puedes ayudar con las libreria q utilizas?
    De antemano te agradecemos…

  2. Hola Daniel, para probar los controles ponte unos botones e invoca los metodos Apagado(), MuyBajo(), Bajo()….

    Sí el código está e C# de Visual.net

    En cuanto a las librerías, utiliza para hacer las llamadas al api de windows mobile esta:
    “System.Runtime.InteropServices”

    Espero que te haya servido de ayuda.

    Un Saludo. Víctor.

  3. mrjuan said

    hola, tengo una pregunta y es que me vota el siguiente error

    !!!! No se puede cargar el archivo DLL ‘CoreDll.dll’: No se puede encontrar el módulo especificado. (Excepción de HRESULT: 0×8007007E) !!!!!
    no se que es pero ya tengo la dll (”coredll.dll”) en el debug y aun no funciona
    x fa si me puedes ayudar

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.