b'soir,
sndvol32 , te permet juste d'afficher la boite de dialogue standard de réglage du volume :
R = Shell("sndvol32 /t", vbNormalFocus)
pour le modifier une solution est l'utilisation de l'API waveOutSetVolume
pour régler le son :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
Declare Function waveOutSetVolume Lib "Winmm" (ByVal wDeviceID As Integer, ByVal dwVolume As Long) As Integer
Sub MonteVolume(i As Integer) 'Volume de 0 à 100%
Dim stVolDr As String 'Volume Droit
Dim stVolGa As String 'Volume gauche
Dim j As Long
j = CLng(&HFFFF)
Debug.Print Hex(j)
'
' L'API permet de régler les canaux droite et gauche indépendament
' les 4 octets de poids ford sont utilisés pour la voie de gauche
' Les 4 octers de poids faible sont utilisés pour la voie de droite
'
stVolGa = Hex((i / 100) * 65535)
stVolDr = Right("0000" & Hex((i / 100) * 65535), 4)
Ret = waveOutSetVolume(0, CLng("&h" & stVolGa & stVolDr))
End Sub |
waveOytSetVolume prend en deuxième paramètre un long (32bits) les 16 bits de poids fort sont utilisé pour le volume de la voie de gauche les 16 bits de poids faible pour la voie de droite..
avec pour les deux voies 0 = muet &hFFFF (65535) donne volume maximum)
le code ci-dessus effectue une mise à l'échelle 0-100 % vers 0 - 65535..
Partager