Publié : sam. 13/janv./2007 23:41

Code : Tout sélectionner
resultat = GetMasterVolume_(0, 0)
Code : Tout sélectionner
; Code : KarLKoX
#MMSYSERR_NOERROR = 0
#MIXER_SHORT_NAME_CHARS = 16
#MIXER_LONG_NAME_CHARS = 64
Structure MIXERCONTROL
cbStruct.l
dwControlID.l
dwControlType.l
fdwControl.l
cMultipleItems.l
szShortName.s[#MIXER_SHORT_NAME_CHARS]
szName.s[#MIXER_LONG_NAME_CHARS]
lMinimum.l
lMaximum.l
reserved.l[10]
EndStructure
Procedure.l MIXER_getVolume(Type.l)
Protected dwVolume.l, result.l, hMixer
Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED
RtlZeroMemory_(ml,SizeOf(MIXERLINE))
RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS))
RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS))
RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED))
result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER)
If result = #MMSYSERR_NOERROR
ml\cbStruct = SizeOf(MIXERLINE)
ml\dwComponentType = Type
result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE)
If result = #MMSYSERR_NOERROR
mlc\cbStruct = SizeOf(MIXERLINECONTROLS)
mlc\dwLineID = ml\dwLineID
mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME
mlc\cControls = 1
mlc\pamxctrl = @mc
mlc\cbmxctrl = SizeOf(MIXERCONTROL)
result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE)
If result = #MMSYSERR_NOERROR
mcd\cbStruct = SizeOf(MIXERCONTROLDETAILS)
mcd\dwControlID = mc\dwControlID;
mcd\paDetails = @mcdu
mcd\cbDetails = SizeOf(MIXERCONTROLDETAILS_UNSIGNED)
mcd\cChannels = 1
result = mixerGetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE)
If result = #MMSYSERR_NOERROR
dwVolume = mcdu\dwValue
EndIf
EndIf
EndIf
EndIf
ProcedureReturn dwVolume
EndProcedure
; newvolume va de 0 = 65535
Procedure MIXER_setVolume(Type.l, newvolume.l)
Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED
RtlZeroMemory_(ml,SizeOf(MIXERLINE))
RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS))
RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS))
RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED))
result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER)
If result = #MMSYSERR_NOERROR
ml\cbStruct = SizeOf(MIXERLINE)
ml\dwComponentType = Type
result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE)
If result = #MMSYSERR_NOERROR
mlc\cbStruct = SizeOf(MIXERLINECONTROLS)
mlc\dwLineID = ml\dwLineID
mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME
mlc\cControls = 1
mlc\pamxctrl = @mc
mlc\cbmxctrl = SizeOf(MIXERCONTROL)
result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE)
If result = #MMSYSERR_NOERROR
mcdu\dwValue = newvolume
mcd\cbStruct = SizeOf(MIXERCONTROLDETAILS)
mcd\dwControlID = mc\dwControlID
mcd\paDetails = @mcdu
mcd\cbDetails = SizeOf(MIXERCONTROLDETAILS_UNSIGNED)
mcd\cChannels = 1
result = mixerSetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE)
If result = #MMSYSERR_NOERROR
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndIf
EndIf
EndIf
EndProcedure
#MAIN_WINDOW = 0
#TRACKBAR = 1
If OpenWindow(#MAIN_WINDOW,0,0,100,200,"Controleur de volume principal")
CreateGadgetList(WindowID(#MAIN_WINDOW))
TrackBarGadget(#TRACKBAR, 50, 20, 20, 160, 0, 655, #PB_TrackBar_Vertical)
SetGadgetState(#TRACKBAR,MIXER_getVolume(#MIXERLINE_COMPONENTTYPE_DST_SPEAKERS)/100)
Repeat
eventid = WaitWindowEvent()
If eventid = #PB_Event_Gadget
Select EventGadget()
Case #TRACKBAR
curvolume = GetGadgetState(#TRACKBAR)
MIXER_setVolume(#MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,curvolume*100+36)
EndSelect
EndIf
Until eventid = #PB_Event_CloseWindow
EndIf
Code : Tout sélectionner
InitSound()
InitModule()
;- Window Constants
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
Enumeration
#Frame3D_0
#Frame3D_1
#Button_0
#Button_1
#Button_2
#Button_3
#Button_4
#Button_5
#Button_6
#Button_7
#Button_8
#Button_9
#TRACKBAR
#radio
#Text_0
#Text_1
EndEnumeration
Procedure connexion()
If Connection = 0
MessageRequester("erreur", "AmaDone RadioWeb n'a pas pu se connecter au serveur, veuillez verifier votre connexion.",#MB_ICONERROR)
End
EndIf
EndProcedure
#MMSYSERR_NOERROR = 0
#MIXER_SHORT_NAME_CHARS = 16
#MIXER_LONG_NAME_CHARS = 64
Structure MIXERCONTROL
cbStruct.l
dwControlID.l
dwControlType.l
fdwControl.l
cMultipleItems.l
szShortName.s[#MIXER_SHORT_NAME_CHARS]
szName.s[#MIXER_LONG_NAME_CHARS]
lMinimum.l
lMaximum.l
reserved.l[10]
EndStructure
Procedure.l MIXER_getVolume(Type.l)
Protected dwVolume.l, result.l, hMixer
Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED
RtlZeroMemory_(ml,SizeOf(MIXERLINE))
RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS))
RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS))
RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED))
result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER)
If result = #MMSYSERR_NOERROR
ml\cbStruct = SizeOf(MIXERLINE)
ml\dwComponentType = Type
result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE)
If result = #MMSYSERR_NOERROR
mlc\cbStruct = SizeOf(MIXERLINECONTROLS)
mlc\dwLineID = ml\dwLineID
mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME
mlc\cControls = 1
mlc\pamxctrl = @mc
mlc\cbmxctrl = SizeOf(MIXERCONTROL)
result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE)
If result = #MMSYSERR_NOERROR
mcd\cbStruct = SizeOf(MIXERCONTROLDETAILS)
mcd\dwControlID = mc\dwControlID;
mcd\paDetails = @mcdu
mcd\cbDetails = SizeOf(MIXERCONTROLDETAILS_UNSIGNED)
mcd\cChannels = 1
result = mixerGetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE)
If result = #MMSYSERR_NOERROR
dwVolume = mcdu\dwValue
EndIf
EndIf
EndIf
EndIf
ProcedureReturn dwVolume
EndProcedure
; newvolume va de 0 = 65535
Procedure MIXER_setVolume(Type.l, newvolume.l)
Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED
RtlZeroMemory_(ml,SizeOf(MIXERLINE))
RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS))
RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS))
RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED))
result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER)
If result = #MMSYSERR_NOERROR
ml\cbStruct = SizeOf(MIXERLINE)
ml\dwComponentType = Type
result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE)
If result = #MMSYSERR_NOERROR
mlc\cbStruct = SizeOf(MIXERLINECONTROLS)
mlc\dwLineID = ml\dwLineID
mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME
mlc\cControls = 1
mlc\pamxctrl = @mc
mlc\cbmxctrl = SizeOf(MIXERCONTROL)
result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE)
If result = #MMSYSERR_NOERROR
mcdu\dwValue = newvolume
mcd\cbStruct = SizeOf(MIXERCONTROLDETAILS)
mcd\dwControlID = mc\dwControlID
mcd\paDetails = @mcdu
mcd\cbDetails = SizeOf(MIXERCONTROLDETAILS_UNSIGNED)
mcd\cChannels = 1
result = mixerSetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE)
If result = #MMSYSERR_NOERROR
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndIf
EndIf
EndIf
EndProcedure
;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Comic Sans MS", 12, #PB_Font_Bold)
If OpenWindow(#Window_0, 216, 0, 350, 400, "AmaDone RadioWeb", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget )
If CreateGadgetList(WindowID(#Window_0))
Frame3DGadget(#Frame3D_0, 10, 10, 330, 230, "STATIONS")
Frame3DGadget(#Frame3D_1, 10, 250, 330, 60, "VOLUME")
ButtonGadget(#Button_0, 20, 30, 130, 30, "nrj")
SetGadgetFont(#Button_0, FontID1)
ButtonGadget(#Button_1, 20, 70, 130, 30, "rfm")
SetGadgetFont(#Button_1, FontID1)
ButtonGadget(#Button_2, 20, 110, 130, 30, "skyrock")
SetGadgetFont(#Button_2, FontID1)
ButtonGadget(#Button_3, 190, 30, 130, 30, "rire et chansons")
SetGadgetFont(#Button_3, FontID1)
ButtonGadget(#Button_4, 190, 70, 130, 30, "nostalgie")
SetGadgetFont(#Button_4, FontID1)
ButtonGadget(#Button_5, 190, 110, 130, 30, "europe 2")
SetGadgetFont(#Button_5, FontID1)
ButtonGadget(#Button_6, 20, 150, 130, 30, "rtl")
SetGadgetFont(#Button_6, FontID1)
ButtonGadget(#Button_7, 20, 190, 130, 30, "rtl²")
SetGadgetFont(#Button_7, FontID1)
ButtonGadget(#Button_8, 190, 150, 130, 30, "contact")
SetGadgetFont(#Button_8, FontID1)
ButtonGadget(#Button_9, 190, 190, 130, 30, "france inter")
SetGadgetFont(#Button_9, FontID1)
TrackBarGadget(#TRACKBAR, 15, 270, 320, 30, 1, 655)
SetGadgetState(#TRACKBAR,MIXER_getVolume(#MIXERLINE_COMPONENTTYPE_DST_SPEAKERS)/100)
TextGadget(#Text_0, 10, 330, 230, 50, "actuellement vous n'ecoutez aucune radio")
SetGadgetFont(#Text_0, FontID1)
EndIf
EndIf
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
Select EventGadget()
Case #Button_0
WebGadget(#radio,0,0,1,1,"http://player.nrj.fr/V4/nrj/nrj_launch_V3.html")
TextGadget(#Text_0, 10, 330, 230, 50, "vous etre actuellement entrain d'ecouter : NRJ")
SetGadgetFont(#Text_0, FontID1)
Case #Button_1
WebGadget(#radio,0,0,1,1,"http://cache.yacast.fr/V4/player_rfm/rfm_main_V2.html")
TextGadget(#Text_0, 10, 330, 230, 50, "vous etre actuellement entrain d'ecouter : RFM")
SetGadgetFont(#Text_0, FontID1)
Case #Button_2
WebGadget(#radio,0,0,1,1,"http://player.skyrock.com/V4/skyrock/skyrock_main_V2.html")
TextGadget(#Text_0, 10, 330, 230, 50, "vous etre actuellement entrain d'ecouter : SKYROCK")
SetGadgetFont(#Text_0, FontID1)
Case #button_3
WebGadget(#radio,0,0,1,1,"http://player.rireetchansons.fr/V4/rireetchansons/rireetchansons_main_V3.html")
TextGadget(#Text_0, 10, 330, 280, 50, "vous etre actuellement entrain d'ecouter : RIRE ET CHANSONS")
SetGadgetFont(#Text_0, FontID1)
Case #button_4
WebGadget(#radio,0,0,1,1,"http://player.nostalgie.fr/V4/nostalgie/nostv2_main.html")
TextGadget(#Text_0, 10, 330, 280, 50, "vous etre actuellement entrain d'ecouter : NOSTALGIE")
SetGadgetFont(#Text_0, FontID1)
Case #button_5
WebGadget(#radio,0,0,1,1,"http://cache.yacast.fr/V4/player_europe2/europe2_launch_V21.html")
TextGadget(#Text_0, 10, 330, 280, 50, "vous etre actuellement entrain d'ecouter : EUROPE 2")
SetGadgetFont(#Text_0, FontID1)
Case #button_6
WebGadget(#radio,0,0,1,1,"http://yacast.rtl.fr/V4/rtl/rtl_launch_V5.html")
TextGadget(#Text_0, 10, 330, 280, 50, "vous etre actuellement entrain d'ecouter : RTL")
SetGadgetFont(#Text_0, FontID1)
Case #button_7
WebGadget(#radio,0,0,1,1,"http://yacast.rtl2.fr/V4/rtl2/rtl2_main_V5.html")
TextGadget(#Text_0, 10, 330, 280, 50, "vous etre actuellement entrain d'ecouter : RTL²")
SetGadgetFont(#Text_0, FontID1)
Case #button_8
WebGadget(#radio,0,0,1,1,"")
TextGadget(#Text_0, 10, 330, 280, 50, "vous etre actuellement entrain d'ecouter : CONTACT")
SetGadgetFont(#Text_0, FontID1)
Case #button_9
WebGadget(#radio,0,0,1,1,"http://viphttp.yacast.net/V4/franceinter/finter_main_V4.html")
TextGadget(#Text_0, 10, 330, 280, 50, "vous etre actuellement entrain d'ecouter : FRANCE INTER")
SetGadgetFont(#Text_0, FontID1)
Case #TRACKBAR
curvolume = GetGadgetState(#TRACKBAR)
MIXER_setVolume(#MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,curvolume*100+36)
EndSelect
EndIf
Until event = #PB_Event_CloseWindow
Code : Tout sélectionner
WebGadget(#Web_0,0,0,1,1,"http://www.hardradio.com/windowsmedia/hard32.asx")
Code : Tout sélectionner
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="media" href="http://www.hardradio.com/windowsmedia/hard32.asx" />
</head>
<body>
<div align="center">
<table width="240 "height="128">
<tr>
<td width="240" height="128"><div align="center">
<!-- Début | Lecteur -->
<object id="MediaPlayer" classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" type="application/x-oleobject" standby="Loading Microsoft Windows Media Player components..." height=128" width="240" align="absmiddle">
<param name="enabled" value="true" />
<param name="defaultframe" />
<param name="enablecontextmenu" value="false" />
<param name="stretchtofit" value="true" />
<param name="windowlessvideo" value="true" />
<param name="url" value="http://www.hardradio.com/windowsmedia/hard32.asx" />
<param name="autostart" value="true" />
<param name="uimode" value="full" />
<param name="volume" value="30" />
<embed type="application/x-mplayer"
pluginspage="http://www.microsoft.com/Windows/MediaPlayer/"
SRC="http://www.hardradio.com/windowsmedia/hard32.asx"
name="MediaPlayer"
width=240
height=128
autostart=1
showcontrols=1> </embed>
</object>
<!-- Fin | Lecteur -->
</div></td>
</tr>
</table>
</div>
</body>
</html>
KarLKoX a écrit :[/code]Code : Tout sélectionner
; Code : KarLKoX #MMSYSERR_NOERROR = 0 #MIXER_SHORT_NAME_CHARS = 16 #MIXER_LONG_NAME_CHARS = 64 Structure MIXERCONTROL cbStruct.l dwControlID.l dwControlType.l fdwControl.l cMultipleItems.l szShortName.s[#MIXER_SHORT_NAME_CHARS] szName.s[#MIXER_LONG_NAME_CHARS] lMinimum.l lMaximum.l reserved.l[10] EndStructure Procedure.l MIXER_getVolume(Type.l) Protected dwVolume.l, result.l, hMixer Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED RtlZeroMemory_(ml,SizeOf(MIXERLINE)) RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS)) RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS)) RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED)) result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER) If result = #MMSYSERR_NOERROR ml\cbStruct = SizeOf(MIXERLINE) ml\dwComponentType = Type result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE) If result = #MMSYSERR_NOERROR mlc\cbStruct = SizeOf(MIXERLINECONTROLS) mlc\dwLineID = ml\dwLineID mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME mlc\cControls = 1 mlc\pamxctrl = @mc mlc\cbmxctrl = SizeOf(MIXERCONTROL) result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE) If result = #MMSYSERR_NOERROR mcd\cbStruct = SizeOf(MIXERCONTROLDETAILS) mcd\dwControlID = mc\dwControlID; mcd\paDetails = @mcdu mcd\cbDetails = SizeOf(MIXERCONTROLDETAILS_UNSIGNED) mcd\cChannels = 1 result = mixerGetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE) If result = #MMSYSERR_NOERROR dwVolume = mcdu\dwValue EndIf EndIf EndIf EndIf ProcedureReturn dwVolume EndProcedure ; newvolume va de 0 = 65535 Procedure MIXER_setVolume(Type.l, newvolume.l) Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED RtlZeroMemory_(ml,SizeOf(MIXERLINE)) RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS)) RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS)) RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED)) result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER) If result = #MMSYSERR_NOERROR ml\cbStruct = SizeOf(MIXERLINE) ml\dwComponentType = Type result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE) If result = #MMSYSERR_NOERROR mlc\cbStruct = SizeOf(MIXERLINECONTROLS) mlc\dwLineID = ml\dwLineID mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME mlc\cControls = 1 mlc\pamxctrl = @mc mlc\cbmxctrl = SizeOf(MIXERCONTROL) result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE) If result = #MMSYSERR_NOERROR mcdu\dwValue = newvolume mcd\cbStruct = SizeOf(MIXERCONTROLDETAILS) mcd\dwControlID = mc\dwControlID mcd\paDetails = @mcdu mcd\cbDetails = SizeOf(MIXERCONTROLDETAILS_UNSIGNED) mcd\cChannels = 1 result = mixerSetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE) If result = #MMSYSERR_NOERROR ProcedureReturn #True Else ProcedureReturn #False EndIf EndIf EndIf EndIf EndProcedure #MAIN_WINDOW = 0 #TRACKBAR = 1 If OpenWindow(#MAIN_WINDOW,0,0,100,200,"Controleur de volume principal") CreateGadgetList(WindowID(#MAIN_WINDOW)) TrackBarGadget(#TRACKBAR, 50, 20, 20, 160, 0, 655, #PB_TrackBar_Vertical) SetGadgetState(#TRACKBAR,MIXER_getVolume(#MIXERLINE_COMPONENTTYPE_DST_SPEAKERS)/100) Repeat eventid = WaitWindowEvent() If eventid = #PB_Event_Gadget Select EventGadget() Case #TRACKBAR curvolume = GetGadgetState(#TRACKBAR) MIXER_setVolume(#MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,curvolume*100+36) EndSelect EndIf Until eventid = #PB_Event_CloseWindow EndIf
Code : Tout sélectionner
Enumeration
#Window_0
EndEnumeration
Enumeration
#TRACKBAR
EndEnumeration
#MMSYSERR_NOERROR = 0
#MIXER_SHORT_NAME_CHARS = 16
#MIXER_LONG_NAME_CHARS = 64
Structure MIXERCONTROL
cbStruct.l
dwControlID.l
dwControlType.l
fdwControl.l
cMultipleItems.l
szShortName.s[#MIXER_SHORT_NAME_CHARS]
szName.s[#MIXER_LONG_NAME_CHARS]
lMinimum.l
lMaximum.l
reserved.l[10]
EndStructure
Procedure.l MIXER_getVolume(Type.l)
Protected dwVolume.l, result.l, hMixer
Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED
RtlZeroMemory_(ml,SizeOf(MIXERLINE))
RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS))
RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS))
RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED))
result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER)
If result = #MMSYSERR_NOERROR
ml\cbStruct = SizeOf(MIXERLINE)
ml\dwComponentType = Type
result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE)
If result = #MMSYSERR_NOERROR
mlc\cbStruct = SizeOf(MIXERLINECONTROLS)
mlc\dwLineID = ml\dwLineID
mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME
mlc\cControls = 1
mlc\pamxctrl = @mc
mlc\cbmxctrl = SizeOf(MIXERCONTROL)
result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE)
If result = #MMSYSERR_NOERROR
mcd\cbStruct = SizeOf(MIXERCONTROLDETAILS)
mcd\dwControlID = mc\dwControlID;
mcd\paDetails = @mcdu
mcd\cbDetails = SizeOf(MIXERCONTROLDETAILS_UNSIGNED)
mcd\cChannels = 1
result = mixerGetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE)
If result = #MMSYSERR_NOERROR
dwVolume = mcdu\dwValue
EndIf
EndIf
EndIf
EndIf
ProcedureReturn dwVolume
EndProcedure
; newvolume va de 0 = 65535
Procedure MIXER_setVolume(Type.l, newvolume.l)
Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED
RtlZeroMemory_(ml,SizeOf(MIXERLINE))
RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS))
RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS))
RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED))
result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER)
If result = #MMSYSERR_NOERROR
ml\cbStruct = SizeOf(MIXERLINE)
ml\dwComponentType = Type
result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE)
If result = #MMSYSERR_NOERROR
mlc\cbStruct = SizeOf(MIXERLINECONTROLS)
mlc\dwLineID = ml\dwLineID
mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME
mlc\cControls = 1
mlc\pamxctrl = @mc
mlc\cbmxctrl = SizeOf(MIXERCONTROL)
result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE)
If result = #MMSYSERR_NOERROR
mcdu\dwValue = newvolume
mcd\cbStruct = SizeOf(MIXERCONTROLDETAILS)
mcd\dwControlID = mc\dwControlID
mcd\paDetails = @mcdu
mcd\cbDetails = SizeOf(MIXERCONTROLDETAILS_UNSIGNED)
mcd\cChannels = 1
result = mixerSetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE)
If result = #MMSYSERR_NOERROR
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndIf
EndIf
EndIf
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 424, 237, 378, 43, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
TrackBarGadget(#TRACKBAR, 10, 10, 360, 20, 0, 10)
SetGadgetState(#TRACKBAR,MIXER_getVolume(#MIXERLINE_COMPONENTTYPE_DST_SPEAKERS)/100)
EndIf
EndIf
EndProcedure
Open_Window_0()
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
If GadgetID = #TRACKBAR
curvolume = GetGadgetState(#TRACKBAR)
MIXER_setVolume(#MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,curvolume*100+36)
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
Code : Tout sélectionner
TrackBarGadget(#TRACKBAR, 10, 10, 360, 20, 0, 10)
Code : Tout sélectionner
TrackBarGadget(#TRACKBAR, 10, 10, 360, 20, 0, 655)