Accueil > > > REGLER LE VOLUME SONORE
REGLER LE VOLUME SONORE
Information sur la source
Description
Permet simplement de régler le volume sonore de windows
Ti£oi$
Source
- Const MMSYSERR_NOERROR = 0
- Const MAXPNAMELEN = 32
- Const MIXER_LONG_NAME_CHARS = 64
- Const MIXER_SHORT_NAME_CHARS = 16
- Const MIXER_GETLINEINFOF_COMPONENTTYPE = &H3&
- Const MIXER_GETLINECONTROLSF_ONEBYTYPE = &H2&
- Const MIXER_SETCONTROLDETAILSF_VALUE = &H0&
- Const MIXERLINE_COMPONENTTYPE_DST_FIRST = &H0&
- Const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS = &H4
- Const MIXERCONTROL_CONTROLTYPE_VOLUME = &H50030001
-
- Private Declare Function mixerOpen Lib "winmm.dll" (phmx As Long, _
- ByVal uMxId As Long, ByVal dwCallback As Long, ByVal dwInstance As Long, _
- ByVal fdwOpen As Long) As Long
- Private Declare Function mixerGetLineInfo Lib "winmm.dll" Alias _
- "mixerGetLineInfoA" (ByVal hmxobj As Long, pmxl As MIXERLINE, _
- ByVal fdwInfo As Long) As Long
- Private Declare Function mixerGetLineControls Lib "winmm.dll" Alias _
- "mixerGetLineControlsA" (ByVal hmxobj As Long, pmxlc As MIXERLINECONTROLS, _
- ByVal fdwControls As Long) As Long
- Private Declare Function mixerSetControlDetails Lib "winmm.dll" (ByVal hmxobj _
- As Long, pmxcd As MIXERCONTROLDETAILS, ByVal fdwDetails As Long) As Long
- Private Declare Function mixerClose Lib "winmm.dll" (ByVal hmx As Long) As Long
- Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
- (Destination As Any, Source As Any, ByVal Length As Long)
- Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _
- ByVal dwBytes As Long) As Long
- Private Declare Function GlobalLock Lib "kernel32" (ByVal hmem As Long) As Long
- Private Declare Function GlobalFree Lib "kernel32" (ByVal hmem As Long) As Long
-
- Private Type MIXERCONTROL
- cbStruct As Long
- dwControlID As Long
- dwControlType As Long
- fdwControl As Long
- cMultipleItems As Long
- szShortName As String * MIXER_SHORT_NAME_CHARS
- szName As String * MIXER_LONG_NAME_CHARS
- lMinimum As Long
- lMaximum As Long
- reserved(10) As Long
- End Type
-
- Private Type MIXERCONTROLDETAILS
- cbStruct As Long
- dwControlID As Long
- cChannels As Long
- item As Long
- cbDetails As Long
- paDetails As Long
- End Type
-
- Private Type MIXERCONTROLDETAILS_UNSIGNED
- dwValue As Long
- End Type
-
- Private Type MIXERLINE
- cbStruct As Long
- dwDestination As Long
- dwSource As Long
- dwLineID As Long
- fdwLine As Long
- dwUser As Long
- dwComponentType As Long
- cChannels As Long
- cConnections As Long
- cControls As Long
- szShortName As String * MIXER_SHORT_NAME_CHARS
- szName As String * MIXER_LONG_NAME_CHARS
- dwType As Long
- dwDeviceID As Long
- wMid As Integer
- wPid As Integer
- vDriverVersion As Long
- szPname As String * MAXPNAMELEN
- End Type
-
- Private Type MIXERLINECONTROLS
- cbStruct As Long
- dwLineID As Long
- dwControl As Long
- cControls As Long
- cbmxctrl As Long
- pamxctrl As Long
- End Type
-
- 'Le volume est exprimé en pourcentage (entre 0 et 100)
- 'la fonction returne true si ca a fonctionné
-
- Function SetVolume(VolumeLevel As Long) As Boolean
- Dim hmx As Long
- Dim uMixerLine As MIXERLINE
- Dim uMixerControl As MIXERCONTROL
- Dim uMixerLineControls As MIXERLINECONTROLS
- Dim uDetails As MIXERCONTROLDETAILS
- Dim uUnsigned As MIXERCONTROLDETAILS_UNSIGNED
- Dim RetValue As Long
- Dim hmem As Long
-
- If VolumeLevel < 0 Or VolumeLevel > 100 Then GoTo error
-
- RetValue = mixerOpen(hmx, 0, 0, 0, 0)
- If RetValue <> MMSYSERR_NOERROR Then GoTo error
-
- uMixerLine.cbStruct = Len(uMixerLine)
- uMixerLine.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS
- RetValue = mixerGetLineInfo(hmx, uMixerLine, _
- MIXER_GETLINEINFOF_COMPONENTTYPE)
- If RetValue <> MMSYSERR_NOERROR Then GoTo error
-
- uMixerLineControls.cbStruct = Len(uMixerLineControls)
- uMixerLineControls.dwLineID = uMixerLine.dwLineID
- uMixerLineControls.dwControl = MIXERCONTROL_CONTROLTYPE_VOLUME
- uMixerLineControls.cControls = 1
- uMixerLineControls.cbmxctrl = Len(uMixerControl)
-
-
- hmem = GlobalAlloc(&H40, Len(uMixerControl))
- uMixerLineControls.pamxctrl = GlobalLock(hmem)
- uMixerControl.cbStruct = Len(uMixerControl)
- RetValue = mixerGetLineControls(hmx, uMixerLineControls, _
- MIXER_GETLINECONTROLSF_ONEBYTYPE)
- If RetValue <> MMSYSERR_NOERROR Then GoTo error
- CopyMemory uMixerControl, ByVal uMixerLineControls.pamxctrl, _
- Len(uMixerControl)
- GlobalFree hmem
- hmem = 0
-
- uDetails.item = 0
- uDetails.dwControlID = uMixerControl.dwControlID
- uDetails.cbStruct = Len(uDetails)
- uDetails.cbDetails = Len(uUnsigned)
- hmem = GlobalAlloc(&H40, Len(uUnsigned))
- uDetails.paDetails = GlobalLock(hmem)
- uDetails.cChannels = 1
- uUnsigned.dwValue = CLng((VolumeLevel * uMixerControl.lMaximum) / 100)
- CopyMemory ByVal uDetails.paDetails, uUnsigned, Len(uUnsigned)
- RetValue = mixerSetControlDetails(hmx, uDetails, _
- MIXER_SETCONTROLDETAILSF_VALUE)
- GlobalFree hmem
- hmem = 0
- If RetValue <> MMSYSERR_NOERROR Then GoTo error
-
- mixerClose hmx
- SetVolume = True
- Exit Function
-
- error:
- ' Une erreur s'est produite
-
- If hmx <> 0 Then mixerClose hmx
- If hmem Then GlobalFree hmem
- SetVolume = False
-
- End Function
Const MMSYSERR_NOERROR = 0
Const MAXPNAMELEN = 32
Const MIXER_LONG_NAME_CHARS = 64
Const MIXER_SHORT_NAME_CHARS = 16
Const MIXER_GETLINEINFOF_COMPONENTTYPE = &H3&
Const MIXER_GETLINECONTROLSF_ONEBYTYPE = &H2&
Const MIXER_SETCONTROLDETAILSF_VALUE = &H0&
Const MIXERLINE_COMPONENTTYPE_DST_FIRST = &H0&
Const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS = &H4
Const MIXERCONTROL_CONTROLTYPE_VOLUME = &H50030001
Private Declare Function mixerOpen Lib "winmm.dll" (phmx As Long, _
ByVal uMxId As Long, ByVal dwCallback As Long, ByVal dwInstance As Long, _
ByVal fdwOpen As Long) As Long
Private Declare Function mixerGetLineInfo Lib "winmm.dll" Alias _
"mixerGetLineInfoA" (ByVal hmxobj As Long, pmxl As MIXERLINE, _
ByVal fdwInfo As Long) As Long
Private Declare Function mixerGetLineControls Lib "winmm.dll" Alias _
"mixerGetLineControlsA" (ByVal hmxobj As Long, pmxlc As MIXERLINECONTROLS, _
ByVal fdwControls As Long) As Long
Private Declare Function mixerSetControlDetails Lib "winmm.dll" (ByVal hmxobj _
As Long, pmxcd As MIXERCONTROLDETAILS, ByVal fdwDetails As Long) As Long
Private Declare Function mixerClose Lib "winmm.dll" (ByVal hmx As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _
ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hmem As Long) As Long
Private Declare Function GlobalFree Lib "kernel32" (ByVal hmem As Long) As Long
Private Type MIXERCONTROL
cbStruct As Long
dwControlID As Long
dwControlType As Long
fdwControl As Long
cMultipleItems As Long
szShortName As String * MIXER_SHORT_NAME_CHARS
szName As String * MIXER_LONG_NAME_CHARS
lMinimum As Long
lMaximum As Long
reserved(10) As Long
End Type
Private Type MIXERCONTROLDETAILS
cbStruct As Long
dwControlID As Long
cChannels As Long
item As Long
cbDetails As Long
paDetails As Long
End Type
Private Type MIXERCONTROLDETAILS_UNSIGNED
dwValue As Long
End Type
Private Type MIXERLINE
cbStruct As Long
dwDestination As Long
dwSource As Long
dwLineID As Long
fdwLine As Long
dwUser As Long
dwComponentType As Long
cChannels As Long
cConnections As Long
cControls As Long
szShortName As String * MIXER_SHORT_NAME_CHARS
szName As String * MIXER_LONG_NAME_CHARS
dwType As Long
dwDeviceID As Long
wMid As Integer
wPid As Integer
vDriverVersion As Long
szPname As String * MAXPNAMELEN
End Type
Private Type MIXERLINECONTROLS
cbStruct As Long
dwLineID As Long
dwControl As Long
cControls As Long
cbmxctrl As Long
pamxctrl As Long
End Type
'Le volume est exprimé en pourcentage (entre 0 et 100)
'la fonction returne true si ca a fonctionné
Function SetVolume(VolumeLevel As Long) As Boolean
Dim hmx As Long
Dim uMixerLine As MIXERLINE
Dim uMixerControl As MIXERCONTROL
Dim uMixerLineControls As MIXERLINECONTROLS
Dim uDetails As MIXERCONTROLDETAILS
Dim uUnsigned As MIXERCONTROLDETAILS_UNSIGNED
Dim RetValue As Long
Dim hmem As Long
If VolumeLevel < 0 Or VolumeLevel > 100 Then GoTo error
RetValue = mixerOpen(hmx, 0, 0, 0, 0)
If RetValue <> MMSYSERR_NOERROR Then GoTo error
uMixerLine.cbStruct = Len(uMixerLine)
uMixerLine.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS
RetValue = mixerGetLineInfo(hmx, uMixerLine, _
MIXER_GETLINEINFOF_COMPONENTTYPE)
If RetValue <> MMSYSERR_NOERROR Then GoTo error
uMixerLineControls.cbStruct = Len(uMixerLineControls)
uMixerLineControls.dwLineID = uMixerLine.dwLineID
uMixerLineControls.dwControl = MIXERCONTROL_CONTROLTYPE_VOLUME
uMixerLineControls.cControls = 1
uMixerLineControls.cbmxctrl = Len(uMixerControl)
hmem = GlobalAlloc(&H40, Len(uMixerControl))
uMixerLineControls.pamxctrl = GlobalLock(hmem)
uMixerControl.cbStruct = Len(uMixerControl)
RetValue = mixerGetLineControls(hmx, uMixerLineControls, _
MIXER_GETLINECONTROLSF_ONEBYTYPE)
If RetValue <> MMSYSERR_NOERROR Then GoTo error
CopyMemory uMixerControl, ByVal uMixerLineControls.pamxctrl, _
Len(uMixerControl)
GlobalFree hmem
hmem = 0
uDetails.item = 0
uDetails.dwControlID = uMixerControl.dwControlID
uDetails.cbStruct = Len(uDetails)
uDetails.cbDetails = Len(uUnsigned)
hmem = GlobalAlloc(&H40, Len(uUnsigned))
uDetails.paDetails = GlobalLock(hmem)
uDetails.cChannels = 1
uUnsigned.dwValue = CLng((VolumeLevel * uMixerControl.lMaximum) / 100)
CopyMemory ByVal uDetails.paDetails, uUnsigned, Len(uUnsigned)
RetValue = mixerSetControlDetails(hmx, uDetails, _
MIXER_SETCONTROLDETAILSF_VALUE)
GlobalFree hmem
hmem = 0
If RetValue <> MMSYSERR_NOERROR Then GoTo error
mixerClose hmx
SetVolume = True
Exit Function
error:
' Une erreur s'est produite
If hmx <> 0 Then mixerClose hmx
If hmem Then GlobalFree hmem
SetVolume = False
End Function
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
LISTER KEYS.KEYLISTER KEYS.KEY par Onin42
Cliquez pour lire la suite par Onin42
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|