Mega Code Archive

 
Categories / Delphi / Multimedia
 

Ses ayarını kısmak ve açmak

function GetVolumeControl(aMixer: HMixer; componentType, ctrlType: Longint; var mxc: TMixerControl): Boolean; var mxl: TMixerLine; mxlc: TMixerLineControls; rc: Longint; begin Result := False; FillChar(mxl, SizeOf(TMixerLine), 0); mxl.cbStruct := SizeOf(TMixerLine); mxl.dwComponentType := componentType; {Obtain a line corresponding to the component type} rc := mixerGetLineInfo(aMixer, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE); if rc = MMSYSERR_NOERROR then begin with mxlc do begin cbStruct := SizeOf(TMixerLineControls); dwLineID := mxl.dwLineID; dwControlType := ctrlType; cControls := 1; cbmxctrl := SizeOf(TMixerLine); pamxctrl := @mxc; pamxctrl^.cbStruct := SizeOf(TMixerControl); end; mixerGetLineControls(aMixer, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); rc := mixerGetLineControls(aMixer, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); Result := rc = MMSYSERR_NOERROR; end; end; function SetVolumeControl(aMixer: HMixer; mxc: TMixerControl; volume: Longint): Boolean; var mxcd: TMixerControlDetails; vol: TMixerControlDetails_Unsigned; rc: MMRESULT; begin FillChar(mxcd, SizeOf(mxcd), 0); with mxcd do begin cbStruct := SizeOf(TMixerControlDetails); dwControlID := mxc.dwControlID; cbDetails := SizeOf(TMixerControlDetails_Unsigned); paDetails := @vol; cMultipleItems := 0; cChannels := 1; end; vol.dwValue := volume; rc := mixerSetControlDetails(aMixer, @mxcd, MIXER_SETCONTROLDETAILSF_VALUE); Result := rc = MMSYSERR_NOERROR; end; function InitMixer: HMixer; var Err: MMRESULT; begin Err := mixerOpen(@Result, 0, 0, 0, 0); if Err <> MMSYSERR_NOERROR then Result := 0; end; procedure SetMasterVolume(vol:integer); var MyMixerHandle: HMixer; MyVolCtrl: TMixerControl; begin { Windows benutzt einen Wertebereich von 0-65536 } vol:=vol*65536 div 100; MyMixerHandle := InitMixer; if MyMixerHandle <> 0 then try FillChar(MyVolCtrl, SizeOf(MyVolCtrl), 0); if GetVolumeControl(MyMixerHandle, MIXERLINE_COMPONENTTYPE_DST_SPEAKERS, MIXERCONTROL_CONTROLTYPE_VOLUME, MyVolCtrl) then begin { Der letzte parameter ist die Lautstärke } SetVolumeControl(MyMixerHandle, MyVolCtrl, vol ) end; finally mixerClose(MyMixerHandle); end; end; procedure TForm1.TrackBar2Change(Sender: TObject); begin SetMasterVolume(TTrackBar(Sender).Position); end;