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

[code lang=»csharp»]

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;
}
}
}

[/code]

Espero que os sirva. Saludos!

Posted in C#, Compact Framework.

Tagged with , .


4 Responses

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

  1. Daniel says

    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. Víctor says

    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 says

    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: 0x8007007E) !!!!!
    no se que es pero ya tengo la dll («coredll.dll») en el debug y aun no funciona
    x fa si me puedes ayudar

  4. jonaro03 says

    buen día gracias por el ejemplo fue muy útil, una aclaración en windows mobile 3.5 compact framework 3.5 se usa OFF = 0;