[.net compact framework] connaître et modifier le niveau de son

Description

Tout est dans le titre,
Cette source illustre l'utilisation de deux APIs managées pour la connaissance et la modification du niveau de son de l'appareil.
Ce sont:
waveOutGetVolume et
waveOutSetVolume

déclarée dans l'assembly coredll

Source / Exemple :


using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace NiveauSon
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        private void mnuQuit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void btnSetLevel_Click(object sender, EventArgs e)
        {
            Volumes selectedVolume = Volumes.NORMAL;
            switch (cbxSoundLevels.Text)
            {
                case "OFF": 
                    selectedVolume = Volumes.OFF;
                    break;
                case "LOW": 
                    selectedVolume = Volumes.LOW;
                    break;
                case "NORMAL": 
                    selectedVolume = Volumes.NORMAL;
                    break;
                case "MEDIUM": 
                    selectedVolume = Volumes.MEDIUM;
                    break;
                case "HIGH": 
                    selectedVolume = Volumes.HIGH;
                    break;
                case "VERY_HIGH":
                    selectedVolume = Volumes.VERY_HIGH;
                    break;
            }
            SmartDeviceVolume.Volume = selectedVolume;
        }
        private void mnuGetSoundLevel_Click(object sender, EventArgs e)
        {
            cbxSoundLevels.SelectedItem = SmartDeviceVolume.Volume.ToString();
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            mnuGetSoundLevel_Click(this, e);
        }
    }
    public enum Volumes : int
    {
        OFF = 0,
        LOW = 858993459,
        NORMAL = 1717986918,
        MEDIUM = -1717986919,
        HIGH = -858993460,
        VERY_HIGH = -1
    }
    public static class SmartDeviceVolume
    {
        [DllImport("coredll.dll", SetLastError = true)]
        internal static extern int waveOutSetVolume(IntPtr device, int volume);
        [DllImport("coredll.dll", SetLastError = true)]
        internal static extern int waveOutGetVolume(IntPtr device, ref int volume);
        public static Volumes Volume
        {
            get
            {
                int volume = 0;
                waveOutGetVolume(IntPtr.Zero, ref volume);
                switch (volume)
                {
                    case (int)Volumes.OFF: return Volumes.OFF;
                    case (int)Volumes.LOW: return Volumes.LOW;
                    case (int)Volumes.NORMAL: return Volumes.NORMAL;
                    case (int)Volumes.MEDIUM: return Volumes.MEDIUM;
                    case (int)Volumes.HIGH: return Volumes.HIGH;
                    case (int)Volumes.VERY_HIGH: return Volumes.VERY_HIGH;
                    default: return Volumes.OFF;
                }
            }
            set 
            { 
                waveOutSetVolume(IntPtr.Zero, (int)value); 
            }
        }
    }
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.