Und zwar wollte ich wissen, wie man bei PB 3.30 die Lautstärke der CD einstellen kann, die man gerade abspielt.
Für Movies gibts ja MovieAudio, aber für CD habe ich jetzt noch nichts gefunden.
Wäre echt gut wenn mir jemand helfen könnte

Code: Alles auswählen
#MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC = 4101
#MIXERCONTROL_CONTROLTYPE_VOLUME = 1342373889
#MIXER_GETLINECONTROLSF_ONEBYTYPE = 2
#MIXER_GETLINEINFOF_COMPONENTTYPE = 3
#MIXER_SETCONTROLDETAILSF_VALUE = 0
#MIXER_LONG_NAME_CHARS = 64
#MIXER_SHORT_NAME_CHARS = 16
#MMSYSERR_NOERROR = 0
Structure MIXERCONTROLDETAILS
cbStruct.l
dwControlID.l
cChannels.l
item.l
cbDetails.l
paDetails.l
EndStructure
Structure MIXERLINECONTROLS
cbStruct.l
dwLineID.l
StructureUnion
dwControlID.l
dwControlType.l
EndStructureUnion
cControls.l
cbmxctrl.l
pamxctrl.l
EndStructure
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
dwReserved.l[10]
EndStructure
Procedure GetVolumeControl(hmixer.l, componentType.l, ctrlType.l, *mxc.MIXERCONTROL)
Protected mxlc.MIXERLINECONTROLS, mxl.MIXERLINE
Protected hmem.l, rc.l, ret.l
mxl\cbStruct = SizeOf(mxl)
mxl\dwComponentType = componentType
rc = mixerGetLineInfo_(hmixer, mxl, #MIXER_GETLINEINFOF_COMPONENTTYPE)
If #MMSYSERR_NOERROR = rc
mxlc\cbStruct = SizeOf(mxlc)
mxlc\dwLineID = mxl\dwLineID
mxlc\dwControlType = ctrlType
mxlc\cControls = 1
mxlc\cbmxctrl = SizeOf(MIXERCONTROL)
hmem = GlobalAlloc_($40, SizeOf(MIXERCONTROL))
mxlc\pamxctrl = GlobalLock_(hmem)
*mxc\cbStruct = SizeOf(MIXERCONTROL) ; oder sizeof)*mxc( ??
rc = mixerGetLineControls_(hmixer, @mxlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE)
If rc = #MMSYSERR_NOERROR
ret = #True
CopyMemory(mxlc\pamxctrl, *mxc, SizeOf(MIXERCONTROL))
Else
ret = #False
EndIf
GlobalFree_(hmem)
ProcedureReturn ret
EndIf
ProcedureReturn #False
EndProcedure
Procedure SetVolumeControl(hmixer.l, *mxc.MIXERCONTROL, volume.l)
Protected mxcd.MIXERCONTROLDETAILS
Protected vol.MIXERCONTROLDETAILS_UNSIGNED
Protected hmem.l, rc.l
mxcd\item = 0
mxcd\dwControlID = *mxc\dwControlID
mxcd\cbStruct = SizeOf(mxcd)
mxcd\cbDetails = SizeOf(vol)
hmem = GlobalAlloc_($40, SizeOf(vol))
mxcd\paDetails = GlobalLock_(hmem)
mxcd\cChannels = 1
vol\dwValue = volume
CopyMemory(@vol, mxcd\paDetails, SizeOf(vol))
rc = mixerSetControlDetails_(hmixer, @mxcd, #MIXER_SETCONTROLDETAILSF_VALUE)
GlobalFree_(hmem)
If #MMSYSERR_NOERROR = rc
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Global hmixer.l, CDAudioCtrl.MIXERCONTROL
Global rc.l, ok.l
rc = mixerOpen_(@hmixer, 0, 0, 0, 0)
If rc <> #MMSYSERR_NOERROR
MessageRequester("shit", "Could not open the mixer!")
End
EndIf
If GetVolumeControl(hmixer, #MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC, #MIXERCONTROL_CONTROLTYPE_VOLUME, @CDAudioCtrl)
Debug "# "+CDAudioCtrl\szName+":"
Debug "Minimum: " + Str(CDAudioCtrl\lMinimum)
Debug "Maximum: " + Str(CDAudioCtrl\lMaximum)
EndIf
If SetVolumeControl(hmixer, CDAudioCtrl, 20)
Debug "Set to 20"
EndIf
Code: Alles auswählen
Structure MIXERLINE
cbStruct.l
dwDestination.l
dwSource.l
dwLineID.l
fdwLine.l
dwUser.l
dwComponentType.l
cChannels.l
cConnections.l
cControls.l
szShortName.c[16]
szName.c[64]
Target.MIXERLINE_TARGET
EndStructure