LES RÉGLAGES DU VOLUME

Déchargement :

Volume1.zip
Volume2.zip

Deux exemples sont proposés ici :

Notes :

  1. Je ne suis pas l'auteur du module de sous-classement (modSubClassForm.bas) très pratique que j'ai trouvé sur http://www.vbthunder.com
  2. Pour modifier ou débugger un code avec une fenêtre sous-classée, on peut désactiver provisoirement le sous-classement en passant en commentaire les 2 lignes de codes suivantes : SubclassForm Me et UnSubclassForm Me.
    En effet, les messages interceptés font partie intégrante du process de VB et un bug fait planter l'appli et VB.

Les Mixers :
Un ordinateur peut comporter plusieurs carets son. Chaque carte son possède un Mixer qui permet d'effectuer tous les réglages de volume d'entrées et sorties.

Le nombre de cartes son présentes est obtenu avec l'API :
NombreDeMixers =
mixerGetNumDevs

Cette API renvoie juste le nombre de Mixers installés, et l'identificateur de chaque Mixer est un nombre entier dont le premier est 0, et qui peut donc prerndre une valeur comprise entre : 0 et NombreDeMixers - 1
Le Mixer 0 est toujours le Mixer par défaut, c'est à dire, celui qui a été choisi dans les options multimedia du panenau de configuration.

Pour accéder à un Mixer, il faut ouvrir une instance et obtenir un handle (ou descripteur)
rc = mixerOpen(hmixer, NumMixer, Me.hWnd, 0, CALLBACK_WINDOW)
La variable hmixer contient un handle pour le Mixer référencé par NumMixer (0 si on veut le mixer par défaut)
Me.hwnd et CALLBACK_WINDOW ne sont utiles que si on désire sous-classer la fenêtre active pour intercepter les messages provenant du Mixer (par exemple, si les réglages du volume ont été modifiés depuis une autre application).

Lorsque l'application se termine, il faut fermer l'instance avec : mixerClose

Les lignes :
Chaque Mixer possède plusieurs lignes (généralement 3). Chaque ligne est définie par une sortie (ou destination) et plusieurs entrées (ou sources). Exemple : la sortie vers les haut-parleurs et toutes les entrées (Wave, Midi, CD, Modem, ...) définissent une ligne. La sortie vers l'enregistreur et les différentes entrées définissent une autre ligne.

rc = mixerGetDevCaps(hmixer, mxCAP, Len(mxCAP))
' Nombre de lignes disponibles
NbLines = mxCAP.cDestinations
' Informations sur la carte son et le driver
Nom du driver : mxCAP.szPname
Version du driver : mxCAP.vDriverVersion

Les contrôles :
Chaque composant d'une ligne (destination ou source) qui accepte un réglage du volume est un contrôle et possède un numéro d'identification unique qu'il est indispensable de connaître si on veut le manipuler..
mxl.dwDestination = IndLine ' (peut varier de 0 à NbLines - 1)
rc = mixerGetLineInfo(hmixer, mxl, MIXER_GETLINEINFOF_DESTINATION)
et on récupère le nombre de contrôles source pour cette ligne :
' Nombre de contrôles source pour cette ligne
NbControlSource = mxl.cConnections

L'API suivante permet de récupérer le numéro d'identification de chaque contrôle
rc = mixerGetLineControls(hmixer, mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE)

Retour à l'accueil