Flags faux
Le
Gloops

Bonjour tout le monde,
Je sèche
Je lance la fonction suivante pour connaître le volume du haut-parleur,
et selon les flags je me retrouve avec une erreur 2, soit
Public Const MMSYSERR_BASE = 0
Public Const MMSYSERR_BADDEVICEID = (MMSYSERR_BASE + 2)
' device ID out of range
alors que hmixer est tout-à-fait accepté pour fixer le volume du
haut-parleur (hmixer est ouvert avant l'appel par la même instruction
que celle que j'ai mise en commentaire),
ou encore avec une erreur 10 ou 11
Public Const MMSYSERR_INVALFLAG = (MMSYSERR_BASE + 10)
' invalid flag passed
Public Const MMSYSERR_INVALPARAM = (MMSYSERR_BASE + 11)
' invalid parameter passed
Peut-être faut-il essayer encore d'autres flags ?
J'espère au moins que je ne me suis pas mélangé les pinceaux pour
adapter la syntaxe depuis SetVolumeControl.
N.B. La fiche Microsoft 178456 mentionne bien une fonction
GetVolumeControl, mais booléenne, elle sert à initialiser les contrôles.
En revanche la fonction SetVolumeControl règle bien le volume du
haut-parleur et celui du micro aux valeurs saisies, super pour
harmoniser des tâches qui lancent des sons à des volumes différents.
' * * *
Public Function GetCurrentVolume(hmixer) As Double
'Dim hmixer As Long
Dim rc As Long
Dim vol As Long
Dim mxcd As MIXERCONTROLDETAILS
Dim Volume As Double
'rc = mixerOpen(hmixer, 0, 0, 0, 0)
mxcd.cbStruct = Len(mxcd)
mxcd.dwControlID = hmixer
mxcd.cChannels = 1
mxcd.item = 0
mxcd.cbDetails = Len(Volume)
hmem = GlobalAlloc(&H40, Len(vol))
mxcd.paDetails = GlobalLock(hmem)
rc = mixerGetControlDetails(hmixer, _
mxcd, _
MIXER_GETCONTROLDETAILSF_VALUE Or MIXER_OBJECTF_WAVEOUT)
If rc <> MMSYSERR_NOERROR Then
MsgBox "Erreur n° " + Str$(rc), vbOK, AppCaption
End If
GetCurrentVolume = Volume
End Function
http://support.microsoft.com/?id8456
Windows XP Home SP1
VB6 SP6
Je sèche
Je lance la fonction suivante pour connaître le volume du haut-parleur,
et selon les flags je me retrouve avec une erreur 2, soit
Public Const MMSYSERR_BASE = 0
Public Const MMSYSERR_BADDEVICEID = (MMSYSERR_BASE + 2)
' device ID out of range
alors que hmixer est tout-à-fait accepté pour fixer le volume du
haut-parleur (hmixer est ouvert avant l'appel par la même instruction
que celle que j'ai mise en commentaire),
ou encore avec une erreur 10 ou 11
Public Const MMSYSERR_INVALFLAG = (MMSYSERR_BASE + 10)
' invalid flag passed
Public Const MMSYSERR_INVALPARAM = (MMSYSERR_BASE + 11)
' invalid parameter passed
Peut-être faut-il essayer encore d'autres flags ?
J'espère au moins que je ne me suis pas mélangé les pinceaux pour
adapter la syntaxe depuis SetVolumeControl.
N.B. La fiche Microsoft 178456 mentionne bien une fonction
GetVolumeControl, mais booléenne, elle sert à initialiser les contrôles.
En revanche la fonction SetVolumeControl règle bien le volume du
haut-parleur et celui du micro aux valeurs saisies, super pour
harmoniser des tâches qui lancent des sons à des volumes différents.
' * * *
Public Function GetCurrentVolume(hmixer) As Double
'Dim hmixer As Long
Dim rc As Long
Dim vol As Long
Dim mxcd As MIXERCONTROLDETAILS
Dim Volume As Double
'rc = mixerOpen(hmixer, 0, 0, 0, 0)
mxcd.cbStruct = Len(mxcd)
mxcd.dwControlID = hmixer
mxcd.cChannels = 1
mxcd.item = 0
mxcd.cbDetails = Len(Volume)
hmem = GlobalAlloc(&H40, Len(vol))
mxcd.paDetails = GlobalLock(hmem)
rc = mixerGetControlDetails(hmixer, _
mxcd, _
MIXER_GETCONTROLDETAILSF_VALUE Or MIXER_OBJECTF_WAVEOUT)
If rc <> MMSYSERR_NOERROR Then
MsgBox "Erreur n° " + Str$(rc), vbOK, AppCaption
End If
GetCurrentVolume = Volume
End Function
http://support.microsoft.com/?id8456
Windows XP Home SP1
VB6 SP6
Gloops a écrit :
[...]
Signalé par Nicolas G, le 9 juin dernier :
http://www.mentalis.org/vbexamples/vbexample.php?vbexample=VOLUME&category=SOURCE
ça pourra peut être te mettre sur la piste
--
Cordialement,
Jacques.
A défaut de répondre à la question, ça solutionne le problème.
Il reste à corriger une erreur de gestion des bornes, mais avec la
source c'est vite fait.
Merci
________________________________________
Jacques93 a écrit, le 23/10/2005 22:42 :
ça y est, j'ai retouché la sauce, à présent ce programme peut rectifier
le volume pour exécuter une tâche planifiée, puis restaurer les réglages
précédents.
Enfin je parle de ma copie, hein.
Je me demande si ça ne va pas intéresser quelqu'un, d'ailleurs.